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] <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:>
> > <mailto:[email protected] <javascript:>>.
> > 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 zobrazit tuto diskusi na webu, navštivte
https://groups.google.com/d/msgid/django-cs/c05edfb0-ea9b-4eef-9d2a-38dfa1faaf18%40googlegroups.com.