0%

🔁 Cikli

Cikli ļauj atkārtoti izpildīt koda bloku. Python piedāvā for un while ciklus, kā arī spēcīgu sarakstu sapratni (list comprehension).

python

for cikls

Teksts
# Iterē pār jebkuru iterable objektu
augļi = ["ābols", "bumbieris", "ķirsis"]

for auglis in augļi:
    print(auglis)
# ābols
# bumbieris
# ķirsis

# Iterē pār virkni
for burts in "Python":
    print(burts, end=" ")   # P y t h o n

# Iterē pār vārdnīcu
novērtējumi = {"Anna": 9, "Jānis": 7, "Liga": 10}

for vārds in novērtējumi:           # Atslēgas
    print(vārds)

for vārds, atzīme in novērtējumi.items():   # Atslēgas un vērtības
    print(f"{vārds}: {atzīme}")

# Iterē pār kopu
unikāli = {1, 3, 5, 7}
for n in unikāli:
    print(n)

range()

Teksts
# range(stop) – no 0 līdz stop-1
for i in range(5):
    print(i)   # 0, 1, 2, 3, 4

# range(start, stop)
for i in range(1, 6):
    print(i)   # 1, 2, 3, 4, 5

# range(start, stop, step)
for i in range(0, 20, 5):
    print(i)   # 0, 5, 10, 15

# Atpakaļ skaitīšana
for i in range(10, 0, -1):
    print(i)   # 10, 9, 8 ... 1

# Klasiskais skaitītājs (kā C-style for)
for i in range(len(augļi)):
    print(f"{i}: {augļi[i]}")
# 0: ābols
# 1: bumbieris
# 2: ķirsis

enumerate() un zip()

Teksts
# enumerate() – elements + indekss vienlaicīgi
dziesmas = ["Bohemian Rhapsody", "Hotel California", "Stairway to Heaven"]

for i, dziesma in enumerate(dziesmas, start=1):   # start=1, lai sāktu no 1
    print(f"{i}. {dziesma}")
# 1. Bohemian Rhapsody
# 2. Hotel California
# 3. Stairway to Heaven

# zip() – iterē vairākas virknes paralēli
vārdi = ["Anna", "Jānis", "Kārlis"]
vecumi = [25, 30, 22]

for vārds, vecums in zip(vārdi, vecumi):
    print(f"{vārds} ir {vecums} gadi")
# Anna ir 25 gadi
# Jānis ir 30 gadi
# Kārlis ir 22 gadi

# zip() apstājas pie īsākās
a = [1, 2, 3, 4]
b = ["a", "b"]
for x, y in zip(a, b):
    print(x, y)
# 1 a
# 2 b

# zip_longest aizpilda trūkstošo
from itertools import zip_longest
for x, y in zip_longest(a, b, fillvalue="?"):
    print(x, y)
# 1 a   2 b   3 ?   4 ?

while cikls

Teksts
# while – izpilda, kamēr nosacījums ir True
skaitītājs = 0

while skaitītājs < 5:
    print(skaitītājs)
    skaitītājs += 1
# 0, 1, 2, 3, 4

# Bezgalīga cilpa ar break
import random

while True:
    uzminēts = random.randint(1, 10)
    print(f"Uzminēts: {uzminēts}")
    if uzminēts == 7:
        print("Atrasts 7!")
        break

# Lietotāja ievade (pamata validācija)
while True:
    ievade = input("Ievadi pozitīvu skaitli: ")
    if ievade.isdigit() and int(ievade) > 0:
        skaitlis = int(ievade)
        break
    print("Lūdzu ievadi derīgu skaitli!")

print(f"Tu ievadīji: {skaitlis}")

break, continue, else

Teksts
# break – pārtrauc cilpu
for i in range(10):
    if i == 5:
        break
    print(i)   # 0, 1, 2, 3, 4

# continue – izlaiž šo iterāciju
for i in range(10):
    if i % 2 == 0:
        continue          # Izlaižam pāra skaitļus
    print(i)   # 1, 3, 5, 7, 9

# else uz cikla – izpildās, JA cikls nebeidzās ar break
for i in range(2, 10):
    for j in range(2, i):
        if i % j == 0:
            print(f"{i} = {j} * {i // j}")
            break
    else:
        print(f"{i} ir pirmskaitlis")
# 2 ir pirmskaitlis
# 3 ir pirmskaitlis
# 4 = 2 * 2
# 5 ir pirmskaitlis
# ...

# Praktisks piemērs – meklēšana sarakstā
studenti = ["Anna", "Jānis", "Kārlis", "Marta"]
meklē = "Kārlis"

for students in studenti:
    if students == meklē:
        print(f"{meklē} atrasts!")
        break
else:
    print(f"{meklē} nav sarakstā")

List Comprehension

Kompakts veids, kā veidot sarakstus. Bieži vien ātrāks par parasto cilpu.

💡 Comprehension vs. cilpa

Izmanto comprehension, kad kods paliek lasāms. Ja loģika ir sarežģīta, labāk ir parasta for cilpa ar append().

Teksts
# Pamata sintakse: [izteiksme for elements in iterable]

# Kvadrāti no 0 līdz 9
kvadrāti = [x**2 for x in range(10)]
print(kvadrāti)   # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

# Ar nosacījumu: [izteiksme for elements in iterable if nosacījums]
pāra = [x for x in range(20) if x % 2 == 0]
print(pāra)   # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

# Transformācija
vārdi = ["anna", "jānis", "kārlis"]
lielie = [v.capitalize() for v in vārdi]
print(lielie)   # ["Anna", "Jānis", "Kārlis"]

# Filtrs
garumā = [v for v in vārdi if len(v) > 4]
print(garumā)   # ["jānis", "kārlis"]

# Ligzdota for
pāri = [(x, y) for x in range(3) for y in range(3) if x != y]
print(pāri)
# [(0, 1), (0, 2), (1, 0), (1, 2), (2, 0), (2, 1)]

# Dict comprehension
kvadrātu_vārd = {x: x**2 for x in range(6)}
print(kvadrātu_vārd)   # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

# Set comprehension
unikālie_garum = {len(v) for v in vārdi}
print(unikālie_garum)   # {4, 5, 6}

# Generator expression (ar iekavām – ekonomē atmiņu)
summa = sum(x**2 for x in range(1000000))
print(summa)