🔀 Nosacījumi
Nosacījumu konstrukcijas ļauj programmai izlemt, kuru koda ceļu izpildīt. Python piedāvā klasisko if/elif/else, ternāro operatoru un Python 3.10+ match/case.
if / elif / else
Teksts
# Pamata if
vecums = 20
if vecums >= 18:
print("Pilngadīgs")
# if / else
if vecums >= 18:
print("Pilngadīgs")
else:
print("Nepilngadīgs")
# if / elif / else
atzime = 85
if atzime >= 90:
vertejums = "Izcili"
elif atzime >= 75:
vertejums = "Labi"
elif atzime >= 60:
vertejums = "Viduvēji"
else:
vertejums = "Neveiksmīgi"
print(f"Atzīme {atzime}: {vertejums}") # Atzīme 85: Labi
# Ligzdoti if
x = 15
if x > 0:
if x > 10:
print("Liels pozitīvs")
else:
print("Mazs pozitīvs")
else:
print("Negatīvs vai nulle")
Patiesuma vērtības (Truthiness)
Teksts
# Python uzskata šīs vērtības par False:
print(bool(0)) # False
print(bool(0.0)) # False
print(bool("")) # False – tukša virkne
print(bool(None)) # False
print(bool([] )) # False – tukšs saraksts
print(bool({} )) # False – tukša vārdnīca
print(bool(set())) # False – tukša kopa
# Viss pārējais ir True:
print(bool(1)) # True
print(bool(-1)) # True
print(bool("x")) # True
print(bool([0])) # True – saraksts ar vienu elementi!
# Praksē:
vards = input("Ievadi vārdu: ")
if vards: # True, ja nav tukšs
print(f"Sveika, {vards}!")
else:
print("Vārds netika ievadīts!")
saraksts = []
if not saraksts: # True, ja tukšs
print("Saraksts ir tukšs")
Ternārais operators
Kompakts if/else vienā rindā.
Teksts
# Sintakse: vērtība_ja_true if nosacījums else vērtība_ja_false
vecums = 20
statuss = "pilngadīgs" if vecums >= 18 else "nepilngadīgs"
print(statuss) # pilngadīgs
# Piemēri
x = -5
abs_x = x if x >= 0 else -x # Absolūtā vērtība
print(abs_x) # 5
skaitlis = 7
paritāte = "pāra" if skaitlis % 2 == 0 else "nepāra"
print(f"{skaitlis} ir {paritāte}") # 7 ir nepāra
# Ligzdots ternārs (nav ieteicams – grūti lasāms)
atzime = 85
# Labāk izmantot if/elif/else
vertejums = "Izcili" if atzime >= 90 else ("Labi" if atzime >= 75 else "Viduvēji")
# Ternārs sarakstā
skaitļi = [1, 2, 3, 4, 5]
uzraksts = ["pāra" if n % 2 == 0 else "nepāra" for n in skaitļi]
print(uzraksts) # ["nepāra", "pāra", "nepāra", "pāra", "nepāra"]
match / case (Python 3.10+)
Python 3.10 ieviest Structural Pattern Matching – spēcīgāks nekā klasiskais switch.
🎓 Ko mācīties tālāk?
Nākamajā sadaļā uzzināsim par Python cilpām – for, while, range() un List Comprehension.
Teksts
# Pamata match/case
komanda = "quit"
match komanda:
case "start":
print("Startē...")
case "stop":
print("Apstājas...")
case "quit" | "exit": # Vairāki varianti
print("Iziet no programmas")
case _: # Noklusējums (kā "default")
print(f"Nezināma komanda: {komanda}")
# match ar vērtībām (sargiem)
skaitlis = 42
match skaitlis:
case n if n < 0:
print(f"{n} ir negatīvs")
case 0:
print("Nulle")
case n if n % 2 == 0:
print(f"{n} ir pāra")
case n:
print(f"{n} ir nepāra")
# match ar tuple
koordinātas = (0, 5)
match koordinātas:
case (0, 0):
print("Izcelsme (origin)")
case (x, 0):
print(f"X ass: x={x}")
case (0, y):
print(f"Y ass: y={y}")
case (x, y):
print(f"Punkts: x={x}, y={y}")
# match ar vārdnīcu
HTTP_kods = {"status": 404, "message": "Not Found"}
match HTTP_kods:
case {"status": 200}:
print("Veiksmīgs!")
case {"status": 404}:
print("Lapa nav atrasta!")
case {"status": 500}:
print("Servera kļūda!")
case _:
print("Nezināms statuss")