Jinak v podobných situacích doporučuju sednout a projít program řádek po
řádku, tak jak ho Python vykonává. Občas se tak chyba dá najít.
(A občas taky ne a je rozumné se zeptat ☺)
On 2020-09-29 16:00, jan kotrba wrote:
...
> for pocet_hadani in range(3):
OK, budu opakovat třikrát. Jdu poprvé; do `pocet_hadani_ přiřadím 0 a
pokračuju:
> try:
OK, tady bude něco co se nemusí povést.
> cislo = int(input("Hádej číslo: "))
OK, vyhodnotím výraz za závorkou a výsledek přiřadím do proměnné.
První vyhodnotím výraz v závorkách čili `input("Hádej číslo: ")`, volání
funkce `input`. Zeptám se tedy uživatele "Hádej číslo: " a počkám si na
odpověd...
... Odpověděl "a", což dosadím místo `input("Hádej číslo: ")`, a
pokračuju ve vyhodnocování výrazu: `int("a")`. Převedu tedy "a" na číslo...
Ale ouvej, to nejde! Nastala chyba, takže přestanu provádět zbytek bloku
`try` a skočím na příslušný `except`.
(pozn. zbytek příkazu, tedy přiřazení do `cislo`, se neprovede – ani
nemůže, není k dispozici žádná hodnota, co by se té proměnné přiřadila.)
> except ValueError:
Ten je hned tady! Tak začnu:
> print("Tohle není číslo!")
OK, volání funkce `print`; vypíšu `"Tohle není číslo!"`.
Tím blok `except` končí, takže pokračuju dál.
> pocet_hadani += 1
K `pocet_hadani` (aktuálně 1) přičtu 1, nová hodnota je tedy 1.
(pozn. tohle není potřeba, postará se o to cyklus `for`.)
> if cislo == tajne_cislo:
OK, porovnám hodnotu `cislo` s `tajne_cislo`.
Ale ouvej! Do proměnné `cislo` ještě není nic přiřazené!
A ani nejsem v bloku `try`, tak ukončím program s chybovou hláškou.