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.

Reply via email to