Lecture Thumbnail

Ako hľadať a riešiť chyby v kóde - debugovanie

Počítač urobí presne to, čo mu povieme, aby spravil. Toto je v ideálnom svete super, avšak nie v našom, v ktorom robia ľudia chyby. Nauč sa, ako ich hľadať, ako ich riešiť a ako im predchádzať.

Chyby sú súčasťou programovania

Každý programátor, bez ohľadu na jeho skúsenosti, robí chyby. Nikto nepíše perfektný kód na prvý pokus. Rozdiel medzi začiatočníkom a skúseným programátorom nie je v tom, že skúsený chyby nerobí - je v tom, že ich vie rýchlo nájsť a opraviť. Táto zručnosť sa nazýva debugovanie (z anglického debugging).

Keď tvoj program nefunguje tak, ako má, Python ti vždy dá nejakú spätnú väzbu. Táto spätná väzba je chybová správa - takzvaný error. Mnohí začiatočníci sa errorov boja, ale v skutočnosti sú tvoji najlepší kamaráti. Error ti hovorí, čo je zle a kde to je zle.

Základné typy errorov

Python rozlišuje viacero typov errorov. Tu sú tie, s ktorými sa budeš stretávať najčastejšie:

Typ erroru Príčina Príklad
SyntaxError Chybný zápis kódu, Python mu nerozumie if x == 1
NameError Premenná alebo funkcia neexistuje print(premenna)
TypeError Nesprávny dátový typ pri operácii "5" + 5
ValueError Hodnota má zlý obsah pre danú operáciu int("ahoj")
IndexError Index mimo rozsahu zoznamu zoznam[99]
IndentationError Chybné odsadenie kódu def f():\nprint()
ZeroDivisionError Delenie nulou 10 / 

Ako čítať chybovú správu

Keď Python narazí na chybu, vypíše takzvaný traceback. Na prvý pohľad to vyzerá strašidelne, ale stačí vedieť, čo kde hľadať. Pozri sa na tento príklad

Čo nám to hovorí?

  • Posledný riadok: typ erroru a jeho popis. Vždy začni čítať odtiaľto - ZeroDivisionError: division by zero hovorí jasne, čo sa stalo.
  • Riadok nad tým: ktorý riadok kódu chybu spôsobil (riadok 3, vyraz cislo / 0).
  • Názov súboru a číslo riadku: kde presne sa error nachádza (program.py, line 3).

Čítaj chybové správy vždy zdola nahor. Posledný riadok ti dá typ a popis chyby, riadky nad ním ti ukážu, kde k nej došlo.

SyntaxError - Python ti nerozumie

SyntaxError nastane vtedy, keď kód nie je napísaný správne - podobne ako keby si napísal vetu bez zmyslu. Python takýto kód ani nespustí, hneď ti povie, že niečo nesedí.

Časté príčiny

  • Chýbajúca dvojbodka za if, for, while alebo def.
  • Nezatvorená zátvorka alebo úvodzovky.
  • Písanie = namiesto == v podmienke.

NameError - premenná, ktorú Python nepozná

NameError sa objaví vtedy, keď sa snažíš použiť premennú alebo funkciu, ktorá neexistuje. Najčastejšie ide o preklep v názve premennej.

Ďalšia častá príčina: volanie funkcie pred jej definíciou.

TypeError - nesprávny dátový typ

TypeError nastane vtedy, keď sa snažíš spraviť operáciu s dátovým typom, ktorý ju nepodporuje. Najčastejšie, keď zabudneš pretypovať vstup od používateľa.

ValueError - správny typ, zlá hodnota

ValueError nastane vtedy, keď je dátový typ správny, ale hodnota v ňom nemá pre danú operáciu zmysel. Klasický príklad: snažíš sa pretypovať text, ktorý nie je číslo, na int.

IndentationError - odsadenie nesedí

Python je citlivý na odsadenie. Každý blok kódu (pod if, for, while, def) musí byť rovnomerne odsadený. IndentationError dostaneš, keď odsadenie nesedí.

Používaj vždy rovnaký spôsob odsadenia. Buď samé tabulátory (TAB) alebo samé medzery (odporúčané sú 4). Nikdy ich nemiešaj.

Postup pri hľadaní chyby

Keď program nefunguje, nepanikár. Skús tento postup:

  1. Prečítaj error. Pozri sa na typ erroru a na číslo riadku. Toto ti ukáže, kde začať hľadať.
  2. Pozri sa na označený riadok. Chyba je niekedy priamo tam, niekedy o riadok vyššie (napr. pri SyntaxError).
  3. Použi print() na kontrolu. Ak nevieš, aká je hodnota premennej v danom momente, jednoducho ju vypíš: print(premenna). Toto je najjednoduchší a najrýchlejší spôsob debugovania.
  4. Debuguj po častiach. Ak máš veľký problém, skús izolovať problematickú časť - odstrihni kód po častiach a nájdi, kde nastáva chyba.
  5. Hľadaj online. Skopíruj text erroru do Google alebo AI. Takmer každý error, na ktorý narazíš, riešil niekto pred tebou.

Debugovanie pomocou print()

Najjednoduchší spôsob, ako zistiť, čo sa deje vo vnútri programu, je vypísať si hodnoty premenných pomocou print(). Toto sa nazýva print debugging a používajú ho aj skúsení programátori.

Kde hľadať pomoc

Každý programátor hľadá pomoc online - to je úplne normálne. Tu sú najlepšie miesta:

  • Google + text erroru: jednoducho skopíruj text chybovej správy do Google. Následne študuj, ako iní ľudia riešili tvoj problém.
  • Stack Overflow alebo Reddit (a iné fórumy): najväčšie web stránky otázok a odpovedí o programovaní. S najväčšou pravdepodobnosťou tam niekto už riešil tvoj problém. Ak nie, tak si môžeš založiť účet a skúsiť tam hľadať pomoc od iných vývojárov a programátorov.
  • Oficiálna dokumentácia Pythonu alebo dokumentácia knižnice.
  • AI (napr. ChatGPT, Claude, Gemini): vie vysvetliť error, navrhnúť opravu alebo vysvetliť, prečo niečo nefunguje. Musíš dávať pozor, aby si AI nevymýšľalo informácie alebo ťa neviedlo v kruhoch.

AI je super pomocník, ale nesnaž sa mu hádzať celý kód a čakať, že ho napíše za teba. Skús najprv problém vyriešiť sám. Skús pochopiť, čo sa deje, prečo to nefunguje. AI ti má pomôcť pochopiť, nie robiť robotu za teba. Programovanie sa naučíš len tým, že budeš sám premýšľať.

Zopakuj si!

  1. Python ti vždy povie, čo je zle - čítaj chybové správy pokojne a zdola nahor.
  2. Poznáš základné typy errorov: SyntaxError, NameError, TypeError, ValueError, IndexError, IndentationError.
  3. Číslo riadku v errore ti ukáže, kde hľadať chybu.
  4. print() je tvoj najlepší kamarát pri hľadaní chýb.
  5. Keď si nevieš rady, hľadaj online - každý to robí.
13. Knižnice