Cyklus for je ideálny vtedy, keď chceš niečo urobiť s každým prvkom skupiny — napríklad vypísať každé meno zo zoznamu, spracovať každý znak reťazca, alebo zopakovať kód presne desaťkrát.
Syntax cyklu for
for premenna in postupnost:
# telo cyklu
premenna v každom opakovaní prevezme hodnotu ďalšieho prvku z postupnost. Cyklus sa skončí, keď sú všetky prvky spracované.
Prechádzanie zoznamom
ovocie = ["jablko", "banán", "čerešňa"]
for druh in ovocie:
print(druh)
Výstup:
jablko
banán
čerešňa
Funkcia range()
Keď chceš zopakovať kód presne N-krát, použi funkciu range():
for i in range(5):
print(i)
# Vypíše: 0 1 2 3 4
range(5) vygeneruje čísla 0, 1, 2, 3, 4 — päť čísel, začína od 0.
range() má tri varianty:
range(stop)— od 0 do stop-1range(start, stop)— od start do stop-1range(start, stop, krok)— od start do stop-1 s daným krokom
for i in range(1, 6): # 1, 2, 3, 4, 5
print(i)
for i in range(0, 20, 5): # 0, 5, 10, 15
print(i)
for i in range(10, 0, -2): # 10, 8, 6, 4, 2
print(i)
Prechádzanie reťazcom
Reťazec je tiež postupnosť — postupnosť znakov:
slovo = "ahoj"
for znak in slovo:
print(znak)
# Vypíše: a h o j (každý na novom riadku)
Počítanie s indexom — enumerate()
Niekedy potrebuješ nielen hodnotu prvku, ale aj jeho poradové číslo (index):
znamky = [1, 2, 1, 3, 2]
for i, znamka in enumerate(znamky):
print(f"Predmet {i + 1}: známka {znamka}")
Výstup:
Predmet 1: známka 1
Predmet 2: známka 2
Predmet 3: známka 1
Predmet 4: známka 3
Predmet 5: známka 2
enumerate() je elegantnejšie ako manuálne počítadlo. Namiesto i = 0; i += 1 dostaneš index automaticky.
Praktický príklad — súčet čísel
cisla = [10, 20, 30, 40, 50]
sucet = 0
for cislo in cisla:
sucet += cislo
print(f"Súčet: {sucet}") # Súčet: 150
Kedy for, kedy while?
| Situácia | Vhodný cyklus |
|---|---|
| Prechádzam cez zoznam alebo reťazec | for |
| Opakujem presne N-krát | for s range() |
| Neviem vopred, koľko opakovaní | while |
| Čakám na vstup alebo udalosť | while |
Nikdy nemeň zoznam, cez ktorý práve prechádzaš cyklom for — môže to spôsobiť nepredvídateľné správanie. Ak potrebuješ odstraňovať prvky, pracuj s kópiou zoznamu.
Cvičné príklady
Čo vypíše tento kód? for i in range(2, 10, 3): print(i)
Zobraziť odpoveď
Napíš cyklus for, ktorý vypíše súčin čísel 1 až 5 (faktoriál 5 = 120).