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]>
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]
> 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 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/CAHna40946wy_EEbAWwZB%3DE%3D3i%3DZtH%3DENYr7UyPH2X%2BJ85cADGA%40mail.gmail.com.