Cyklus se používá, pokud potřebujeme nějakou akci zopakovat vícekrát. Jeden průchod cyklem se nazývá iterace. Následující iterace je provedena, pokud je stále splněna podmínka cyklu.
Příklad:
Proveď u každého žáka ve třídě dotaz:
Jsi ve škole?
For cyklus slouží k projití pomocí předem jasně definovaných hodnot. Jeho syntaxe v Pythonu vypadá poněkud netradičně, takto:
Příklad:
for i in range(1,856):
Rozsah cyklu definujeme pomocí funkce range(od, do), proměnná i je instancí aktuálního průchodu cyklem. Při průchodu výše zmíněným cyklem proměnná i nabývá hodnot 1, 2, 3, ..., 854, 855 a 856.
Otázka: Nabude opravdu proměnná i hodnoty 856 a jaký má daná iterace s touto hodnotou průběh?
Příklad:
for radek in a_file:
Příkaz projde všechny řádky v připojeném souboru s instancí a_file. Jednotlivý řádek bude při iteraci uložen do proměnné radek.
Stejným způsobem lze načítat i data z jakéhokoliv pole - viz následující téma.
Jak již název napovídá, while cyklus provádí danou operaci, zatímco je daná podmínka splněna. Syntaxe je velmi jednoduchá, proto se v algoritmizaci rozsáhle používá.
Definice vstupů do cyklu musí být ještě, než cyklus vůbec započne. Se vznikem while cyklu nelze definovat proměnné.
Příklad:
while result != 366000: result += 1
Proměnná result musí být definována výše v programu před vstupem do while cyklu. Například: result = 0.
Otázka: Jaká bude hodnota v proměnné result po iteraci se vstupem "result < 366000" ?
Přiřazovací operátory slouží k jednodušší aktualizace proměnné.
Označení operátoru | Funkce operátoru |
---|---|
+= | Připočti k aktuální hodnotě proměnné |
-= | Odečti k aktuální hodnotě proměnné |
*= | Vynásob aktuální hodnotu proměnné |
/= | Vyděl k aktuální hodnotě proměnné |
Ovládat cyklus je možné nejen podle podmínky, ale také pomocí dvou skokových příkazů continue a break.
Příkaz continue program okamžitě posouvá do další iterace cyklu.
Příkaz break okamžitě ukončuje vnitřní cyklus.
Příklad:
for i in range(1,6): if i==2: print ("Pokračuj do další iterace!") continue print (i) if i>3: print("Násilím ukonči cyklus!") break
Uživatel načte dvě libovolná kladná čísla, systém vypíše libovolnou mocninu jednoho čísla na druhé.
Jedno ze správných řešení se objeví po hodině cyklus_priklad.py
Vytvořte program, který bude generovat Fibonnaciho posloupnost a zastaví se ve chvíli, kdy dané číslo bude větší než uživatelský vstup.
Ukázkové řešení problému fibonnaci.py a fibonnaciZHodiny.py
Zdrojový kód ke stažení - cyklus.py
result = 0 #Číselná iterace - for cyklus for i in range(1,856): # K jednotlivým hodnotám lze přistupovat přes iterátor i result += i print (result) """ #Iterace z pole - for cyklus with open("test.txt", mode="r", encoding="utf-8") as a_file: for radek in a_file: print(radek) """ #Číselná iterace - while cyklus while result != 366000: result += 1 print(result) #Příkazy uvnitř cyklů for i in range(1,6): if i==2: print ("Pokračuj do další iterace!") continue print (i) if i>3: print("Násilím ukonči cyklus!") break #Specialita Pythonu - else cyklu for i in range (1,2): print (i) else: print("Nakonec ještě něco dodám!")
365940 366000 1 Pokračuj do další iterace! 3 4 Násilím ukonči cyklus! 1 Nakonec ještě něco dodám!