Cykly 2: while
Cyklus while
, česky bychom řekli “zatím co”, je podobný příkazu if
. Kód v příkazu if se vykoná pouze tehdy, když je podmínka pravdivá. Cyklus while
funguje podobně, je vykonáván tak dlouho, dokud je podmínka pravdivá. Je to cyklus a proto se opakuje.
Základní forma cyklu while
vypadá následovně:
while podmínka:
# kód, který se má opakovat
Tento cyklus provádí blok kódu uvnitř smyčky tak dlouho, dokud je podmínka True
. Pokud je podmínka od začátku False
, cyklus se vůbec nevykoná. Podmínka je kontrolována vždy na začátku každé iterace cyklu.
Blok uvnitř cyklu je opět odsazený o 4 mezery nebo 1 tabulátor. A opět je třeba nezapomenout na dvojtečku na konci řádku s podmínkou.
Asi první co tě možná napadne je, že uvnitře cyklu musí být nějaký způsob, jak ukončit cyklus, jinak by se mohl opakovat donekonečna.
Podívejme se na jednoduchý příklad, který vypíše čísla od 0 do 4:
i = 0 # iterátor
while i < 5:
print(i)
i += 1
V tomto příkladu je proměnná i
na začátku nastavena na 0. Cyklus while
kontroluje, zda je i
menší než 5. Pokud ano, provede blok kódu, který vypíše aktuální hodnotu i
a poté zvýší i
o 1. Smyčka while
kontroluje podmínku a provádí blok kódu, dokud i
není menší než 5. V tomto okamžiku se smyčka while
již nevykoná a program pokračuje za cyklem.
Nekonečné smyčky
Pokud není podmínka cyklu while
nikdy nepravdivá, cyklus poběží donekonečna. Takové smyčky se nazývají nekonečný cyklus a většinou jde o nežádoucí chování. Občas se stane, že vytvoříme nekonečnou smyčku omylem, můžete ji zastavit stisknutím kombinace kláves CTRL + C
.
Zkus si to na následujícím kódu:
# nekonečná smyčka
# ukončení: CTRL + C
while True:
print("Ahoj, světe!")
Nebo tomto:
# příklad 4 - nekonečný cyklus
# ukončení: CTRL + C
i = 0
while True:
print(i)
i += 1
A nebo tymto:
# nekonečný cyklus
# ukončení: CTRL + C
i = 0
while i < 5:
print(i)
# i se nikdy nezvětší
# nekonečný cyklus
# ukončení: CTRL + C
i = 0
while i < 5:
print(i)
i -= 1
Někdy stačí drobný překlem a nekonečný cyklus je na světě.
konvence
Je zvykem používat v cyklech proměnnou pojmenovanou i
jako “iterátor”. Pokud potřebuješ více iterátorů, tak se pokračuje i
, j
, k
, l
, … atd. Pokud ovšem proměnná má nějaký význam, tak by měla být pojmenováná podle významu a ne obecným i
. V naší hře bychom měli spíše iterátor pojmenovaný jako pokus
.
Kontrolní otázky
- K čemu slouží v jazyce Python cyklus
while
? - Dokážete vysvětlit základní syntaxi cyklu
while
? - Co se stane, když není splněna podmínka v cyklu
while
? - Jak se vyhnete nekonečné smyčce při použití smyčky
while
? - Kdy se kontroluje podmínka během iterace cyklu
while
? - Jakou roli hraje iterátor v cyklu
while
? - Můžeš uvést jednoduchý příklad cyklu
while
?
Kvízy
Kvíz 1: Co dělá cyklus while
v jazyce Python?
- Provede blok kódu, pokud je splněna určitá podmínka.
- Provede blok kódu určitý početkrát.
- Provádí blok kódu tak dlouho, dokud platí určitá podmínka.
- Provede blok kódu jednou a pak přeskočí na další část kódu.
Kvíz 2: Co je to nekonečná smyčka?
- Smyčka, která nikdy neskončí, protože nikdy není splněna výstupní podmínka.
- Smyčka, která běží velmi dlouho, ale nakonec se zastaví.
- Smyčka, která opakuje stejnou operaci nekonečně mnohokrát.
- Smyčka, která neustále inkrementuje proměnnou.
Kvíz 3: Jaký bude výstup následujícího kódu?
i = 0
while i < 5:
print(i)
i += 2
- 0 1 2 3 4
- 0 2 4
- 0 1 2 3 4 5
- 0 2 4 6
Kvíz 4: Jak v jazyce Python zastavíte nekonečnou smyčku?
- Zavřením interpretu jazyka Python
- Stisknutím kláves CTRL+C
- Počkáním na ukončení smyčky
- Použitím klíčového slova `break` uvnitř smyčky
Kvíz 5: Co vypíše následující kód?
i = 5
while i > 0:
print(i)
i -= 1
- 1 2 3 4 5
- 0 1 2 3 4
- 5 4 3 2 1 0
- 5 4 3 2 1
Cvičení
Cvičení 1: Čísla 1 až 10
Napište program, který pomocí smyčky while
vypíše čísla 1 až 10.
Cvičení 2: Fibonacciho posloupnost
Napište program, který vypíše Fibonacciho posloupnost až po číslo zadané uživatelem.
Cvičení 3: Faktoriál
Napište program, který vypočítá faktoriál čísla zadaného uživatelem. Faktoriál čísla je součin všech kladných celých čísel menších nebo rovných tomuto číslu. Například faktoriál čísla 5 je . K výpočtu faktoriálu použijte cyklus while
.
Cvičení 4: Znak po znaku
Napište program, který se uživatele zeptá na slovo a poté pomocí cyklu while
vypíše každý znak slova na samostatný řádek.
Cvičení 5: Uhodni číslo
Vytvořte program, který náhodně vybere číslo mezi 1 a 100. Program se zeptá uživatele, aby číslo uhodl. Program bude uživateli říkat, zda je jeho odhad příliš vysoký, příliš nízký nebo správný, a bude pokračovat, dokud uživatel neuhodne správné číslo.