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.

Reply via email to