Cykly patria k najdôležitejším nástrojom v programovaní. Umožňujú nám vykonávať rovnaké (alebo podobné) kroky viackrát bez toho, aby sme museli opakovať riadky kódu. Vďaka cyklom môžeme spracovať stovky alebo tisíce záznamov s rovnakým kódom.
Cyklus for — keď vieme počet opakovaní
Cyklus for použijeme vtedy, keď vopred vieme, koľkokrát sa má niečo vykonať, alebo keď chceme prejsť prvkami nejakej kolekcie (zoznamu, reťazca a pod.).
# Vypíše čísla 0 až 4
for i in range(5):
print(i)
# Prejde každý prvok zoznamu
ovocie = ["jablko", "hruška", "slivka"]
for polozka in ovocie:
print(polozka)
Premenná i (alebo iný zvolený názov) sa pri každej iterácii automaticky nastaví na ďalší prvok sekvencie.
Funkcia range(n) v Pythone generuje čísla od 0 do n-1. range(1, 6) generuje čísla 1 až 5. range(0, 10, 2) generuje párne čísla 0, 2, 4, 6, 8.
Cyklus while — keď závisíme od podmienky
Cyklus while sa opakuje dovtedy, kým platí zadaná podmienka. Používame ho, keď vopred nevieme, koľko opakovaní bude potrebných.
pocitadlo = 0
while pocitadlo < 5:
print(pocitadlo)
pocitadlo = pocitadlo + 1
Pozor na nekonečné cykly! Ak sa podmienka nikdy nestane nepravdivou, program beží donekonečna. Vždy sa uistite, že v tele cyklu existuje niečo, čo podmienku časom poruší.
Kedy použiť for a kedy while
| Situácia | Odporúčaný cyklus |
|---|---|
| Iterácia cez zoznam alebo reťazec | for |
| Presne daný počet opakovaní | for |
| Opakuj, kým používateľ nezadá správny vstup | while |
| Čakanie na nejakú udalosť | while |
Všeobecné pravidlo: keď vieme počet iterácií dopredu, volíme for. Keď závisíme od podmienky, volíme while.
Príkazy break a continue
Priebeh cyklu môžeme ovplyvniť dvoma špeciálnymi príkazmi:
break— okamžite ukončí celý cyklus.continue— preskočí zvyšok aktuálnej iterácie a pokračuje ďalšou.
for i in range(10):
if i == 5:
break # cyklus sa zastaví pri i = 5
if i % 2 == 0:
continue # párne čísla preskočí
print(i) # vypíše len 1, 3
Cykly môžu byť aj vnorené — jeden cyklus sa nachádza vo vnútri druhého. To sa hodí napríklad pri prechode dvojrozmernej tabuľky alebo pri porovnávaní všetkých párov prvkov.
Cvičné príklady
Aký je rozdiel medzi cyklom for a while?