Cykly jsou v Pythonu konstrukce, které umožňují opakování určitých částí kódu. Dva nejčastěji používané jsou for a while.
Představ si, že máš hrací kostku. Každá strana kostky má na sobě číslo od jedné do šesti. Teď si představ, že chceš vědět, jaká čísla jsou na kostce. Jak to uděláš? Podíváš na každou stranu kostky a zapíšeš si jednotlivá čísla.
V Pythonu to děláme podobně s pomocí cyklu for. Říkáme mu, aby postupně prošel seznam čísel a provedl nějakou akci pro každé číslo. Například, když mu řekneme, aby prošel seznam od jedné do šesti, zapíšeme to takhle:
for strana_kostky in range(1, 7, 1):
print(strana_kostky)
První číslo v závorce určuje počátek, v našem případě začínáme na 1. Druhý prvek definuje do kdy, se cyklus provádí. Pozor, NENÍ to včetně něj, proto jsme museli napsat 7 (poslední uvažované číslo bude tak 6). Třetí číslo nám říká, o kolik máme proměnnou strana_kostky zvětšit. (Pokud chceme přičítat 1, jako v našem případě, můžeme třetí prvek ze závroky vynechat, v Pythonu se totiž jedná o výchozí hodnotu.)
Do proměnné strana_kostky se tak postupně dosadí 1, 2, 3, 4, 5 a 6.
Syntaxe s dvojtečkou a odsazením je stejná jako u podmínek.
whilePředstav si, že jsi na sportovním hřišti a chceš běžet kolem hřiště tolikrát, dokud neuběhneš minimálně 1000 metrů (hřiště je po obvodu dlouhé 300 metrů). Jak to uděláš? Uběhneš první kolo, podíváš se, jestli si uběhl více než 1000 metrů a pokud ne, poběžíš další kolo. Podíváš se, jestli si dohromady uběhl více než 1000 metrů a pokud ne poběžíš další kolo atd.
V Pythonu to můžeme udělat pomocí cyklu while. Říkáme mu, aby opakoval určitý úkol, dokud je splněna nějáká podmínka. Například, když mu řekneme, aby opakoval úkol, dokud neuběhneme 1000 metrů, kód může vypadat takhle:
ubehnuto = 0 # na začátku začínáme s 0 uběhnutými metry
while ubehnuto <= 1000: # dokud neuběhneme 1000 metrů, tak se provede následující kód:
print(ubehnuto) # výpis celkem uběhnutých metrů
ubehnuto = ubehnuto + 300 # přičtení k celku nově uběhnuté kolo
Syntaxe až na slovo while je úplně stejná jako u podmínek (if). Dalo by se tedy říct, že while je jako podmínka, jejíž kód se může provést vícekrát.
Cyklus for nám pomáhá projít všechny prvky v určitém rozmezí a pro každý provést nějakou akci, zatímco cyklus while nám umožňuje opakovat určitý úkol, dokud je splněna zadaná podmínka.
Nekonečné cykly jsou jako kolotoč, který se nikdy nepřestane otáčet. Programátor je může vytvořit, když potřebuje, aby určitý kód běžel znovu a znovu, dokud se nedosáhne určitého cíle nebo podmínky.
Podívejme se na příklad:
while True:
print("Toto je nekonečný cyklus!")
V tomto kódu while True: znamená, že cyklus bude pokračovat donekonečna (True = 1, což je vždy splněno). Program bude tisknout "Toto je nekonečný cyklus!" znovu a znovu.
Co když ale chceme nekonečný cyklus zastavit? K tomu použijeme příkaz break.
Příkaz break slouží k zastavení nekonečného cyklu, pokud je splněna určitá podmínka.
while True:
odpoved = input("Máš hlad? ano/ne: ")
if odpoved == "ano":
print("Pojďme na svačinu!")
break
else:
print("Dobře, pokračujeme dál!")
V příkladu výše se program ptá hráče, jestli má hlad. Pokud hráč odpoví "ano", program vypíše "Pojďme na svačinu!" a příkaz break zastaví nekonečný cyklus. V případě jiné odpovědi se cyklus zopakuje.
Ale co když nechceme zastavit celý cyklus, ale chceme pouze přeskočit některé kroky? K tomu použijeme příkaz continue.
Příkaz continue používáme k přeskočení některých kroků v cyklu a pokračování dál. Podívejme se na příklad:
for cislo in range(1, 7):
if cislo == 3:
continue
print("Číslo:", cislo)
V tomto příkladu program projde čísla 1, 2, 3, 4, 5 a 6 a každé z nich kromě čísla 3 vypíše. Když totiž narazí na číslo 3, příkaz continue ho přeskočí a pokračuje dalším číslem.