Čtení chyb
Chyby k programování patří. Dělají je i zkušení programátoři, a to každý den. Důležité je umět je rychle najít a opravit, a s tím vám pomůžou chybové hlášky.
Když Python nemůže váš program provést, ukáže pod výstupem červenou chybovou hlášku. Například tento program má na druhém řádku překlep:
cena = 120
print(cna)Python skončí touto hláškou:
Traceback (most recent call last):
File "<exec>", line 2, in <module>
NameError: name 'cna' is not defined. Did you mean: 'cena'?Možná vypadá děsivě, ale snadno se čte, když začnete odspodu:
- Poslední řádek říká, co se pokazilo. Před dvojtečkou je typ chyby, tady
NameError(chyba názvu). Za dvojtečkou je anglicky popis: názevcnanení definovaný, takže ho Python nezná. Někdy Python dokonce navrhne opravu:Did you mean: 'cena'?znamená „Mysleli jstecena?“ - Řádek nad ním říká, kde chyba nastala:
line 2, tedy na druhém řádku.File "<exec>"ain <module>jen říkají, že jde o váš program, takže si jich nemusíte všímat. - První řádek,
Traceback (most recent call last), je jen nadpis: to, co následuje, sleduje chybu zpátky až k místu, kde nastala.
Trochu jinak vypadá SyntaxError (chyba syntaxe). Znamená, že kód porušuje pravidla zápisu Pythonu, jeho syntaxi. Většinou chybí uvozovka nebo závorka:
print("Ahoj"Python skončí touto hláškou:
Traceback (most recent call last):
File "<exec>", line 1
print("Ahoj"
^
SyntaxError: '(' was never closedPython ukáže řádek s chybou a místo označí znakem ^: tady jde o závorku, která nebyla nikdy uzavřena. Chybějící uvozovka skončí chybou SyntaxError: unterminated string literal (detected at line 1), tedy text (textový řetězec), který nikde nekončí. Python si před spuštěním projde celý program, takže když je v něm chyba syntaxe, neprovede se vůbec nic, ani řádky před chybou.
Časté jsou ještě dvě chyby:
NameError(chyba názvu): použili jste název, který Python nezná. Většinou jde o překlep (cnamístocena, neboCena, protože záleží na velikosti písmen), o proměnnou použitou dřív, než byla vytvořena, nebo o text bez uvozovek:print(Anna).TypeError(chyba typu): pokusili jste se s hodnotou udělat něco, co její typ nedovoluje, například spojit textový řetězec s číslem:"5" + 3.
Při chybě NameError nebo TypeError se program provádí, dokud na chybu nenarazí, a pak skončí. Co vypsal předtím, ve výstupu zůstane. To je užitečné vodítko: chyba je až za posledním print(), který ještě něco vypsal.
Když dostanete chybu, přečtěte si nejdřív poslední řádek hlášky, pak najděte řádek, o kterém mluví, a chybu opravte. Potom program spusťte znovu: o kus dál může být další chyba.
Jak psát:
Pokyny
Program v editoru obsahuje tři chyby. Spusťte ho, přečtěte si chybovou hlášku, opravte chybu a program spusťte znovu. Opakujte to, dokud program nevypíše:
Hráč: Anna
Body: 10
Body po bonusu: 15Začněte programovat zdarma
10/11