Návod na Python – cyklus s podmínkou

Python cyklus while

Cyklus patří mezi další základní programovací struktury. Díky němu máme možnost opakovat určitou sekvenci příkazů několikrát za sebou. V Pythonu máme k dispozici jednak cyklus s pevným počtem opakování (cyklus typu FOR), na ten se podíváme příště, a cyklus s podmínkou na začátku (cyklus typu WHILE).

V Pythonu nenajdeme cyklus s podmínkou na konci (konstrukce DO – WHILE nebo REPEAT – UNTIL), ale lze ho vytvořit pomocí cyklu s podmínkou na začátku, což si také ukážeme.

cyklus while Python vývojový diagram
Vývojový diagram cyklu s podmínkou na začátku. © Logickémyšlení.cz

Cyklus WHILE s podmínkou na začátku

Cyklus typu WHILE používá podobnou konstrukci jako příkaz větvení IF: WHILE (pokud) je splněna logická podmínka, potom opakuj blok příkazů. Příkazy v bloku, který se má opakovat se opět píší s odsazením zleva, podobně jako v příkazu IF. Příkazy, kterými má program pokračovat, píšeme na stejné úrovni s WHILE.

while logicka_podminka:
  prikaz_1
  prikaz_2
prikaz_3

Dokud bude platit logická podmínka uvedená za WHILE, bude se blok příkazů (prikaz_1 a prikaz_2) opakovat.

Až podmínka splněná nebude, bude program pokračovat příkazem prikaz_3.

Cyklus WHILE může mít v Pythonu dokonce větev ELSE, podobně jako příkaz IF. Tato část se provede pouze jednou poté, co podmínka za WHILE není splněna. Poté se pokračuje na další příkazy za cyklem.

while logicka_podminka:
  prikaz_1
else:
  prikaz_2
prikaz_3

Dokud bude platit logická podmínka uvedená za WHILE, bude se opakovat příkaz prikaz_1.

Až podmínka splněná nebude, bude program pokračovat větví ELSE příkazem prikaz_2, a až poté příkazem prikaz_3.

Ukážeme si použití cyklu WHILE na jednoduchém příkladu. Na vstupu je přirozené číslo N, náš program vypíše všechna přirozená čísla menší nebo rovno N. Můžete si vyzkoušet zde.

Příklad: Výpis čísel menších nebo rovno N

N = int(input("Zadej kladné číslo: "))
I = 1
while I <= N:
  print(I)
  I = I + 1
print("Konec programu")

Přerušení cyklu a jeho použití pro cyklus s podmínkou na konci

Někdy potřebujeme řešit ukončení cyklu v průběhu vyhodnocování bloku příkazů v cyklu: k tomu slouží příkaz BREAK. A jindy potřebujeme ukončit provádění daného cyklu a vrátit se zpět na jeho začátek a znovu otestovat jeho podmínku, k dispozici máme příkaz CONTINUE.

while podminka_cyklu:
  prikaz_1
  if podminka_vyskoceni:
    break
prikaz_3

Dokud bude platit logická podmínka uvedená za WHILE, bude se opakovat příkaz prikaz_1.

Pokud bude True i logická podmínka vyskočení za IF, cyklus se kompletně ukončí a bude se pokračovat za cyklem příkazem prikaz_3.

while podminka_cyklu:
  prikaz_1
  if podminka_preskoceni:
    continue
  prikaz_2
prikaz_3

Dokud bude platit logická podmínka uvedená za WHILE, bude se opakovat celý blok příkazů uvnitř cyklu.

Pokud bude True i logická podmínka přeskočení za IF, příkaz prikaz_2 se již neprovede, provádění cyklu se vrátí na začátek a znovu se otestuje podmínka cyklu za WHILE.

Výše uvedenou konstrukci můžeme použít pro emulaci cyklu s podmínkou na konci. Úvodní podmínku nastavíme na True, v základu tedy vyjdeme z nekonečného cyklu. Ukončovací podmínku s direktivou break dáme na místo posledního příkazu cyklu. Tento typ cyklu vykoná vždy příkazy v těle cyklu alespoň jednou. Používá se například pro ověření správnosti zadání parametrů, jako v tomto příkladu:

Příklad: Cyklus s podmínkou na konci

while True:
  A = float(input("Zadej kladné číslo A: "))
  B = float(input("Zadej kladné číslo B: "))
  if (A > 0) and (B > 0):
    break
  else:
    print("Chybné zadání, zadejte čísla znovu!")
print("Výborně, obě zadaná čísla jsou kladná!")

Podobně se takováto „nekonečná“ smyčka používá při řízení programu pomocí událostí (všechny moderní operační systémy, většina aplikací běžících pod nimi atd.). Program neustále v hlavním řídícím cyklu zachycuje, řadí a vyhodnocuje události (vstup od uživatele, dokončení jiných procesů apod.). Jednou z událostí je samozřejmě také signál k ukončení programu. V tom případě program z této hlavní smyčky vyskočí, provede závěrečné operace a ukončí se.

Buďte první, kdo vloží komentář

Přidejte odpověď