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/>
>
<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
<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>
>
<https://groups.google.com/d/msgid/django-cs/66df6009-4404-4159-ac90-1cc76bce5519%40googlegroups.com?utm_medium=email&utm_source=footer
<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
<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]
<mailto:[email protected]>.
Chcete-li tuto diskusi zobrazit na webu, navštivte
https://groups.google.com/d/msgid/django-cs/69b9ca2f-4f02-487f-8b1d-ad3dfed76bfe%40googlegroups.com
<https://groups.google.com/d/msgid/django-cs/69b9ca2f-4f02-487f-8b1d-ad3dfed76bfe%40googlegroups.com?utm_medium=email&utm_source=footer>.