Nejako to vzalo bez obrázkov, skúšam ešte raz:
Dne sobota 9. května 2020 9:01:33 UTC+2 Helena Zubčeková napsal(a):
>
> 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]>
>> 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/69b9ca2f-4f02-487f-8b1d-ad3dfed76bfe%40googlegroups.com.