Martin Svoboda

Martin Svoboda - Blog

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.

Cyklus vs podmínka
Podmínka vlevo a cyklus vpravo.

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

  1. K čemu slouží v jazyce Python cyklus while?
  2. Dokážete vysvětlit základní syntaxi cyklu while?
  3. Co se stane, když není splněna podmínka v cyklu while?
  4. Jak se vyhnete nekonečné smyčce při použití smyčky while?
  5. Kdy se kontroluje podmínka během iterace cyklu while?
  6. Jakou roli hraje iterátor v cyklu while?
  7. Můžeš uvést jednoduchý příklad cyklu while?

Kvízy

Kvíz:

Kvíz 1: Co dělá cyklus while v jazyce Python?

  1. Provede blok kódu, pokud je splněna určitá podmínka.
  2. Provede blok kódu určitý početkrát.
  3. Provádí blok kódu tak dlouho, dokud platí určitá podmínka.
  4. Provede blok kódu jednou a pak přeskočí na další část kódu.
Kvíz:

Kvíz 2: Co je to nekonečná smyčka?

  1. Smyčka, která nikdy neskončí, protože nikdy není splněna výstupní podmínka.
  2. Smyčka, která běží velmi dlouho, ale nakonec se zastaví.
  3. Smyčka, která opakuje stejnou operaci nekonečně mnohokrát.
  4. Smyčka, která neustále inkrementuje proměnnou.
Kvíz:

Kvíz 3: Jaký bude výstup následujícího kódu?

i = 0
while i < 5:
    print(i)
    i += 2
  1. 0 1 2 3 4
  2. 0 2 4
  3. 0 1 2 3 4 5
  4. 0 2 4 6
Kvíz:

Kvíz 4: Jak v jazyce Python zastavíte nekonečnou smyčku?

  1. Zavřením interpretu jazyka Python
  2. Stisknutím kláves CTRL+C
  3. Počkáním na ukončení smyčky
  4. Použitím klíčového slova `break` uvnitř smyčky
Kvíz:

Kvíz 5: Co vypíše následující kód?

i = 5
while i > 0:
    print(i)
    i -= 1
  1. 1 2 3 4 5
  2. 0 1 2 3 4
  3. 5 4 3 2 1 0
  4. 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 5!=54321=1205! = 5 \cdot 4 \cdot 3 \cdot 2 \cdot 1 = 120. 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.