Díky vám obom, tá zátvorka naozaj všetko vyriešila :D
Zároveň som to ale opravila viac popythonovsky a mám tam to "not in". Už to
funguje!
Takže... v test_piskvorky mám funkciu, ktorá overuje, že ten nevalidný
vstup naozaj vyvolá ValueError:
A v ai.py, kde tá pôvodná funkcia je, si potrebujem tú exception raisnúť a
povedať mu, za akých okolností sa to má stať:
Ešte ma napadá, ako by som skombinovala test_blabla s tým, keď mám v tom
core.py nejakú chybu ošetrené cez try: except: ....
napr.:
Je možné toto ošetrenie tiež nejako overiť v tom mojom test_blabla file?
Ak aj áno, tak mi uniká, čo tým dosiahnem... možno akurát overím, že tá
funkcia je ošetrená? Povedala by som, že v tomto prípade test_blabla file
je zbytočný a nemá čo overiť... mám pravdu?
Ďakujem :)
Heli
Dne pátek 8. května 2020 22:03:19 UTC+2 Krystof Pilnacek napsal(a):
>
> Ahoj,
>
> z nejakeho duvodu ta podminka ("-" in pole == False) nevypada, ze by
> fungovala jak popisuje Petr. Jejim vysledkem je totiz False a proto se ten
> program cykli. True (coz je hodnota, kterou je potreba dostat) se mi
> povedla dostat, pokud jsem dal zavorku kolem "-" in pole, tedy if ("-" in
> pole) == False:. Pak to zacne fungovat.
>
> Jen mi to neprijde jako spravne Python reseni. Jednak se v Pythonu pro
> porovnavani jestli je neco True/False nepouziva == ale is (stejne jako
> pro None). A pak jeste v ifech neni potreba to porovnani s False, ale
> pred dany vyraz staci dat not. A aby to bylo uplne nej, tak not se v
> tomto pripade dava pred in (to aby to bylo co nejpodobnejsi anglictine).
> Takze radek if "-" in pole == False:by mel vypadat: if "-" not in pole:.
>
> Doufam, ze to pomuze.
> Hezky vecer
> Krystof
>
> On Fri, May 8, 2020 at 7:21 PM Helena Zubčeková <[email protected]
> <javascript:>> wrote:
>
>> To dáva zmysel... skúsila som teda to upraviť:
>> čiže:
>> Ak pole neobsahuje "-", tak vyvolaj Value Error.
>> Ale cyklí sa mi to veselo naďalej...
>>
>> Moc díky :)
>> Heli
>>
>>
>>
>>
>> Dne pátek 8. května 2020 19:03:35 UTC+2 Petr Viktorin napsal(a):
>>>
>>> `On 2020-05-08 18:40, Helena Zubčeková wrote:
>>> > Ahoj,
>>> >
>>> > Myslím, že som pohopila, čo myslíš, ale stále neviem, ako opraviť svoj
>>> > kód...
>>> > Mala by som teda v ai.py, kde mám funkciu tah_pocitace, pridať nejaké
>>> > ošetrenie situácie, keď v "pole" nemám žiadnu "-", čo znamená, že už
>>> tam
>>> > nie sú voľné miesta. Napísala som toto:
>>>
>>> > try:
>>> > "-" in pole == True
>>> > except Value:
>>> > print("Pole je plné")
>>> > (zbytek programu)
>>>
>>>
>>>
>>> Řekněme že jsem Python a jdu udělat co mi tenhle program přikazuje.
>>> Řekněme že pole je 'oxoxoxoxoxoxoxoxoxox', tedy neobsahuje pomlčku.
>>>
>>> `try:` -- hmm, tady asi nastane nějaká výjimka, budu na to připravený!
>>>
>>> `"-" in pole == True` -- to je složitý výraz, vyhodnotím ho postupně.
>>> žádá pomlčka v `pole` není, takže `"-" in pole` neplatí; můžu za to
>>> dosadit False. Z `"-" in pole == True` se stane `False == True`. To
>>> neplatí, takže hodnota celého výrazu je False.
>>> S výrazem `"-" in pole == True` nemám nic dělat, tak na výsledek `False`
>>> zapomenu.
>>>
>>> `except Value:` -- žádná výjimka nenastala, tak celý `except` blok
>>> přeskočím.
>>>
>>> A teď Python dostane ke zbytku programu, který se, jak víme z
>>> dřívějška, zacyklí.
>>>
>>>
>>>
>>> Když tenhle kousek programu přeložím z Pythonu do češtiny, dostanu:
>>>
>>> zkus:
>>> spočítat jestli "pole obsahuje pomlčku" je rovno "pravdě"
>>> a když se to nepovede:
>>> napiš "pole je plné!"
>>>
>>> Tady je možná líp vidět, proč to nedělá co má. Tenhle program reaguje na
>>> případné výjimky (try/except), ale žádné výjimky nezpůsobuje! Přitom
>>> právě vyvolání výjimky je správná reakce na nekorektní vstup jako
>>> pole='oxoxoxoxoxoxoxoxoxox'.
>>>
>>>
>>> > Ale keď skúšam zavolať test_piskvorky.py, tak sa mi to stále zacyklí,
>>> > rovnako, ako predtým... Myslím, že nerozumiem, ako spolu komunikujú
>>> > súbory text_piskvorky.py a ai.py, aký je medzi nimi vzťah. Ak
>>> > test_piskorky raisuje chybu za určitých okolností, tak ai.py má mať
>>> > try:except blok? Alebo vôbec nie?
>>> > Zatiaľ tomu rozumiem tak, že test_piskvorky skúša funkciu s použitím
>>> > nesprávneho vstupu, a raisuje chybu, ak tam je, a potom ten core súbor
>>> > (v tomto prípade ai.py) potrebuje mať takúto chybu nejako ošetrenú?
>>> > takže try-except? Až na to, že toto to nefunguje, možno to bude tým,
>>> že
>>> > ak "-" in pole == True nie je pravdivé, tak tá chyba nie je
>>> ValueError...
>>> >
>>> > Som hodne zmätená. Díky za radu,
>>> > Heli
>>> >
>>> >
>>> > Dne úterý 5. května 2020 12:58:52 UTC+2 Petr Viktorin napsal(a):
>>> >
>>> > On 2020-05-01 15:58, Helena Zubčeková wrote:
>>> > > Ahoj,
>>> > >
>>> > > Som v kapitole
>>> > > https://naucse.python.cz/course/pyladies/beginners/testing/
>>> > <https://naucse.python.cz/course/pyladies/beginners/testing/>, a
>>> > > nerozumiem, prečo mi test_tah_chyba nefunguje...
>>> > > V príkazovom riadku sa mi program zasekne na modro
>>> podčiarknutej
>>> > časti,
>>> > > a musím to ukončiť ctrl+C...
>>> > >
>>> > >
>>> > > Chýba mi niečo v piskvorky.py? Nakoniec som tam doplnila túto
>>> > časť (aj
>>> > > keď v materiáloch to vyslovene povedané nie je, ale naznačené
>>> to
>>> > asi je):
>>> > > Ale nepomohlo to. Nedáva mi to aj tak moc zmysel, pretože
>>> vtedy,
>>> > keď je
>>> > > na rade počítač, nemôže mať plné pole... pretože najprv hrá
>>> hráč,
>>> > potom
>>> > > počítač, obaja doplňujú po jednom písmene, a pole má párny
>>> počet
>>> > polí...
>>> > >
>>> > > Moc díky za radu :) snažím sa to pochopiť, a z materiálov mi
>>> nie je
>>> > > jasné, čo je zle a prečo sa mi to cyklí/zasekáva.
>>> > >
>>> > > Heli
>>> >
>>> > Ahoj!
>>> > Zkus tu funkci zavolat, tak jak ji volá test:
>>> >
>>> > piskvorky.tah_pocitace('oxoxoxoxoxoxoxoxoxox')
>>> >
>>> > V téhle situaci funkce tah_pocitace nemůže nic rozumného vrátit.
>>> > Správná
>>> > reakce na tuhle situaci je tedy vyvolání výjimky, třeba
>>> ValueError.
>>> > Místo toho to vypadá, že se tvoje funkce zacyklí: vybírá pořád
>>> dokola
>>> > náhodné pozice, a nikdy nevybere volnou pozici na kterou jde hrát.
>>> > Je tedy potřeba změnit funkci tah_pocitace: když v hracím poli
>>> není
>>> > volné místo, vyhoď výjimku.
>>> >
>>> > Je pravda, že když správně napíšeš program který tuhle funkci
>>> volá, tak
>>> > k téhle situaci nedojde. Ale co když ho napíšeš špatně? Co když
>>> budeš
>>> > pracovat v týmu, a jeden z tvých kolegů bude chtít tah_pocitace
>>> > použít v
>>> > jiném programu?
>>> > `test_tah_chyba` testuje funkci jako takovou, ne jen způsob jak ji
>>> > Piškvorky volají.
>>> >
>>> > --
>>> > --
>>> > E-mailová skupina [email protected]
>>> > Správa: http://groups.google.cz/group/django-cs
>>> > ---
>>> > Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny
>>> > „django-cs“ ve Skupinách Google.
>>> > Chcete-li zrušit odběr skupiny a přestat dostávat e‑maily ze skupiny,
>>> > zašlete e-mail na adresu [email protected]
>>> > <mailto:[email protected]>.
>>> > Chcete-li tuto diskusi zobrazit na webu, navštivte
>>> >
>>> https://groups.google.com/d/msgid/django-cs/66df6009-4404-4159-ac90-1cc76bce5519%40googlegroups.com
>>>
>>> > <
>>> https://groups.google.com/d/msgid/django-cs/66df6009-4404-4159-ac90-1cc76bce5519%40googlegroups.com?utm_medium=email&utm_source=footer>.
>>>
>>>
>>>
>> --
>> --
>> E-mailová skupina [email protected] <javascript:>
>> Správa: http://groups.google.cz/group/django-cs
>> ---
>> Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny
>> „django-cs“ ve Skupinách Google.
>> Chcete-li zrušit odběr skupiny a přestat dostávat e‑maily ze skupiny,
>> zašlete e-mail na adresu [email protected] <javascript:>.
>> Chcete-li tuto diskusi zobrazit na webu, navštivte
>> https://groups.google.com/d/msgid/django-cs/c05edfb0-ea9b-4eef-9d2a-38dfa1faaf18%40googlegroups.com
>>
>> <https://groups.google.com/d/msgid/django-cs/c05edfb0-ea9b-4eef-9d2a-38dfa1faaf18%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>
--
--
E-mailová skupina [email protected]
Správa: http://groups.google.cz/group/django-cs
---
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny django-cs
ve Skupinách Google.
Chcete-li zrušit odběr skupiny a přestat dostávat e‑maily ze skupiny, zašlete
e-mail na adresu [email protected].
Chcete-li zobrazit tuto diskusi na webu, navštivte
https://groups.google.com/d/msgid/django-cs/57e9b74a-c4bc-4613-abba-e2474efb2be1%40googlegroups.com.