3. tēma: Vadības struktūras. 4. stunda: try/except bloki un validācija.

Tavs šīs stundas izaicinājums: Padarīt programmu "neiznīcināmu". Tu iemācīsies noķert kļūdas, pirms tās aptur kodu, un izveidosi sistēmu, kas pieklājīgi lūdz lietotāju ievadīt pareizus datus.

SR 2.4.10. (Atkļūdošana un kļūdu novēršana)

Teorija: Izņēmumu apstrāde

Kļūdas programmēšanā sauc par izņēmumiem (exceptions). Mēs tos nevis ignorējam, bet "noķeram", lai programma neizslēgtos.

Bloks Loma Kad tas izpildās?
try Mēģinājums Vienmēr. Šeit liekam "bīstamo" kodu (piemēram, ievadi).
except Drošības tīkls Tikai tad, ja try blokā kaut kas "salūza".
ValueError Kļūdas tips Kad mēģinām burtus pārvērst par skaitli (int/float).

Zelta likums: Lietotājs vienmēr var kļūdīties. Labs programmētājs to paredz un neļauj programmai avarēt.

Praktiskie uzdevumi

1. uzdevums: Skaitļu drošības sargs

  1. VS Code izveido failu drosiba.py.
  2. Izveido try: bloku un mēģini tajā konvertēt lietotāja ievadi par skaitli: v = int(input("Vecums: ")).
  3. Pievieno except ValueError: bloku.
  4. except izvadi ziņojumu: "Kļūda! Lūdzu, izmanto tikai ciparus.".
  5. Pārbaudi programmu, ievadot vārdu "desmit" — vairs nevajadzētu izvadīt kļūdu!

2. uzdevums: Neatlaidīgā ievade

  1. Izveido failu validacija.py.
  2. Izmanto while True: ciklu, lai dators neatstātos, kamēr nav dabūjis derīgu skaitli.
  3. Cikla iekšienē ievieto try/except bloku.
  4. Ja konvertācija izdodas, izmanto break, lai izietu no cikla.
  5. Ja notiek kļūda, izvadi pamācību un ļauj ciklam sākties no jauna.

3. uzdevums: Žetonu un likmju sargs

  1. Izveido failu asp_validacija.py.
  2. Iegūsti "Žetonu skaitu" (int) un "Likmi" (float) ar try/except cikliem.
  3. Pievieno validāciju: ja likme ir lielāka par žetoniem (likme > žetoni), izvadi: "Tev nepietiek līdzekļu!" un liec ievadīt likmi vēlreiz.
  4. Nodrošini, ka spēlētājs nevar ievadīt negatīvu likmi!

Biežākās kļūdas:

Koda paraugs: Profesionāla ievade

while True:
    try:
        likme = float(input("Ievadi likmi: "))
        if likme > 0:
            break
        print("Likmei jābūt pozitīvai!")
    except ValueError:
        print("Kļūda! Ievadi skaitli, izmantojot punktu (piem., 5.5).")

print(f"Likme {likme} pieņemta!")
Ievadi likmi: pieci
Kļūda! Ievadi skaitli...
Ievadi likmi: 10.5
Likme 10.5 pieņemta!
⬅ Iepriekšējā stunda Nākamā stunda ➡