Vadības struktūras // un validācija
Iemāci datoram pieņemt lēmumus ar if/elif/else, atkārtot darbības
ar while un apstrādāt kļūdas ar try/except.
6 stundas - tēmas saturs
No zarošanās un loģikas līdz pilnai Akmens-Šķēres-Papīrīts spēlei.
Zarošanās un salīdzināšanas operatori
Iemāci programmai pieņemt lēmumus ar if/elif/else blokiem.
Loģiskie operatori
Apvieno nosacījumus ar and, or, not un lasi patiesuma tabulas.
While cikli un ciklu kontrole
Izveido bezgalīgu ciklu un pārvalda to ar break un continue komandām.
Kļūdu apstrāde un validācija
Veidō kļūdu izturīgu ievadi ar try/except blokiem un raise.
Saraksti un For cikli
Izveido sarakstus [], apstrādā tos ar for ciklu un pievieno/noņem elementus ar .append() un .remove().
Noslēguma projekts: Akmens-Šķēres-Papīrīts
Izveido pilnu spēli ar validāciju, random datora gājienu un raunda skaitītāju.
3. tēmas špikeris - vadības struktūras un validācija
Zarošanās, loģiskie operatori, cikli, kļūdu apstrāde un saraksti. Katrs bloks atbilst vienai stundai.
3.1-3.2 Zarošanās un loģiskie operatori
# Salīdzināšana vienmēr dod True vai False
== vienāds != nav vienāds
> lielāks < mazāks
>= lielāks vai vienāds <= mazāks vai vienāds
# = piešķir vērtību == salīdzina <- biežākā kļūda!
if vecums >= 18:
print("Pilngadīgs")
elif vecums > 0: # pārbauda TIKAI, ja iepriekšējais bija False
print("Nepilngadīgs")
else:
print("Kļūda")
# and / or / not
if limenis >= 10 and punkti >= 50: # abiem jābūt patiesiem
if ievade == "stop" or ievade == "beigt": # pietiek ar vienu
if lietus and not ir_lietussargs: # not apgriež otrādi
# Ligzdots if -> īsāk ar and
if a:
if b: darit() # tas pats, kas: if a and b: darit()
Zaru secība ir svarīga: elif vecums >= 65 nekad nenostrādās, ja virs tā ir if vecums >= 18.
3.3 Cikli: while, break, continue
# Skaitītāja cikls
dzivibas = 3
while dzivibas > 0:
print("Spēlējam!", dzivibas)
dzivibas -= 1 # BEZ ŠĪ cikls nekad nebeidzas (Ctrl+C, lai apturētu)
# Spēles cikls
while True:
ievade = input("Gājiens (vai 'stop'): ").lower().strip()
if ievade == "stop":
break # iziet no cikla PAVISAM
if ievade == "":
print("Ievade nevar būt tukša!")
continue # atgriežas cikla SĀKUMĀ, izlaižot pārējo
print("Spēlēju ar:", ievade)
# .lower() - pārvērš mazajos burtos -> "STOP" arī nostrādā
# .strip() - noņem liekās atstarpes
break = beidz ciklu. continue = izlaid šo apli, bet turpini.
3.4 Kļūdu apstrāde un validācija
# Divi dažādi pārbaužu veidi:
# try/except - ķer KĻŪDU (nevar pārvērst par skaitli)
# if - ķer NEDERĪGU VĒRTĪBU (skaitlis ir, bet negatīvs)
while True:
try:
likme = float(input("Ievadi likmi: "))
if likme <= 0:
print("Likmei jābūt pozitīvai!")
continue # vērtība nederīga -> prasa vēlreiz
break # viss kārtībā -> ejam tālāk
except ValueError:
print("Kļūda! Ievadi skaitli ar punktu, piemēram 2.5")
print("Likme pieņemta:", likme)
# Biežākie kļūdu tipi:
# ValueError int("abc") IndexError saraksts[99]
# KeyError d["nav taada"] TypeError "5" + 5
break liec try bloka beigās - tad tas nostrādā tikai pēc veiksmīgas konvertācijas.
3.5 Saraksti un for cikls
materiali = ["Tāfele", "Uzlīmes"]
materiali.append("Marķieris") # pievieno BEIGĀS
len(materiali) # 3 - elementu skaits
materiali[0] # "Tāfele" - pirmais ir 0, nevis 1!
materiali[-1] # "Marķieris" - pēdējais
if "Marķieris" in materiali: # vai sarakstā ir?
print("Var sākt!")
for lieta in materiali: # iet cauri VISIEM elementiem
print(f">> {lieta}")
# Ar numerāciju
for nr, lieta in enumerate(materiali, 1):
print(f"{nr}. {lieta}")
# Tukšs saraksts NAV kļūda - cikls vienkārši neizpildās neviena reizi
tukss = []
for x in tukss:
print("šī rinda nekad neizpildīsies")
Pēdējā elementa indekss ir len(saraksts) - 1. saraksts[len(saraksts)] vienmēr ir IndexError.
3.6 Noslēguma projekts: viss kopā
import random
varianti = ["akmens", "skeres", "papirs"]
manas, datora = 0, 0
while True:
gajiens = input("Izvēlies (vai 'stop'): ").lower().strip()
if gajiens == "stop":
break
if gajiens not in varianti: # validācija
print("Nederīga izvēle.")
continue
dators = random.choice(varianti)
print(f"Dators: {dators}")
if gajiens == dators:
print("Neizšķirts")
elif (gajiens == "akmens" and dators == "skeres") or \
(gajiens == "skeres" and dators == "papirs") or \
(gajiens == "papirs" and dators == "akmens"):
manas += 1
else:
datora += 1
print(f"Rezultāts: {manas} : {datora}")
Šajā vienā programmā ir visa tēma: saraksts, while, break, continue, if/elif/else un or.