while smyčka v Pythonu. Jak to funguje, příklady použití

Smyčky jsou jedním z hlavních nástrojů každého jazyka. V Pythonu jsou dvě základní smyčky, z nichž jedna je while. Zvažte to a také pro lepší pochopení obrázku ještě jeden. Opravdu, ve srovnání s něčím podobným je mnohem snazší pochopit jakýkoli materiál, že?

Koncept cyklu

Smyčka je potřeba, když je třeba určitou akci provést vícekrát. To je velmi zjednodušené, protože ve skutečnosti je rozsah použití pro cykly mnohem širší. V Pythonu existují dva hlavní typy smyček: for a while. Nejoblíbenější je pro.

Kromě konkrétních akcí můžete až do určitého bodu opakovat různé části kódu. Může to být určitý počet opakování nebo pokud platí určitá podmínka.

Než začneme rozumět typům smyček a zejména, musíme ještě pochopit, co je iterace. Toto je jedno opakování akce nebo sekvence akcí během aktuálního cyklu v rámci aktuálního běhu aplikace.

Cyklus pro

Naše smyčka For není počítadlo, jako v mnoha jiných jazycích. Jeho úkolem je vyjmenovat určitou posloupnost hodnot. Co to znamená? Řekněme, že máme seznam prvků. Nejprve smyčka vezme první, druhou, třetí a tak dále.

Výhodou této smyčky v Pythonu je, že nemusíte určovat index prvku, abyste věděli, kdy smyčku opustit. Vše proběhne automaticky.

>>> spis = [10, 40, 20, 30]

>>> pro prvek ve spisoku:

… tisk (prvek + 2)

...

12

42

22

32

V našem příkladu jsme použili proměnnou prvek po příkazu for. Obecně platí, že název může být jakýkoli. Například populární označení je i. A s každou iterací bude této proměnné přiřazen konkrétní objekt ze seznamu, který jsme nazvali příslušným slovem.

V našem případě je seznam posloupností čísel 10,40,20,30. Při každé iteraci se v proměnné objeví odpovídající hodnota. Například, jakmile začne smyčka, proměnná prvek je přiřazena hodnota 10. Při další iteraci se desítka změní na číslo 40, potřetí se změní na číslo 20 a nakonec se při poslední iteraci smyčky změní na 30.

Signál pro konec cyklu je konec prvků v seznamu.

Pokud potřebujete, aby smyčka provedla klasický výčet hodnot, jako v jiných programovacích jazycích, měli byste vytvořit seznam s posloupností přirozených čísel až do hodnoty, kterou potřebujeme.

>>> spisok = [1,2,3,4,5]

Nebo použijte funkci len(), k určení délky seznamu. Ale v tomto případě je lepší použít smyčku zatímco, protože není potřeba používat proměnnou.

Pokud potřebujete změnit pořadí hodnot v seznamu, smyčka for a tady přichází na pomoc. K tomu musí být při každé iteraci každému prvku seznamu přiřazena vhodná hodnota.

Zatímco Loop

Na rozdíl od cyklu for, který jednoduše iteruje přes hodnoty sekvence, smyčky zatímco má více využití. Název tohoto typu cyklů se překládá jako „zatím“. Tedy „až“.

Jedná se o univerzální smyčku, která se nachází ve všech programovacích jazycích. A v některých ohledech připomíná podmíněný operátor tis, který provádí kontrolu, zda je splněna určitá podmínka. Pouze na rozdíl od podmíněného operátoru, zatímco provádí kontrolu při každé iteraci, nikoli pouze jednou. A pouze pokud je podmínka nepravdivá, cyklus skončí a provede se příkaz, který po něm následuje. Jednoduše řečeno, pokud již neplatí situace, ve které pracuje.

Nakreslíme-li cyklus zatímco zjednodušeně se to provádí pomocí takového schématu.while smyčka v Pythonu. Jak to funguje, příklady použití

Hlavní větev programu (která běží mimo smyčku) je na tomto obrázku znázorněna modrými obdélníky. Tyrkysová představuje tělo cyklu. Kosočtverec je zase podmínkou, která se kontroluje při každé iteraci.

Cyklus zatímco může vést ke dvěma výjimkám:

  1. Pokud na začátku cyklu logický výraz nevrátí hodnotu true, pak jednoduše nezačne, protože byl dokončen před provedením. Obecně je tato situace normální, protože za určitých okolností aplikace nemusí zajistit přítomnost výrazů v těle smyčky.
  2. Pokud je výraz vždy pravdivý, může to vést ke smyčce. Tedy k nekonečnému rolování cyklu. Proto by v takových programech měl vždy existovat příkaz exit ze smyčky nebo programu. Tato situace však nastane, pokud byl program schopen určit pravdivost nebo nepravdivost konkrétní podmínky. Pokud to neudělala, vrátí se chyba s ukončením programu. Nebo můžete chybu zpracovat, a pokud k ní dojde, bude proveden určitý kód.

Možností, jak chybu ošetřit, může být obrovské množství. Program může například požádat uživatele o správné zadání dat. Takže pokud osoba označila záporné číslo, kde může být pouze kladné, nebo zadala písmena, kde by měla být pouze čísla, program o tom může říct.

Příklady smyčky

Zde je příklad kódu, který v tomto případě zpracovává chybu.

n = input(“Zadejte celé číslo:”) 

while type(n) != int:

    vyzkoušejte následující postup:

        n = int(n)

    kromě ValueError:

        tisk ("Chybný záznam!")

        n = input(“Zadejte celé číslo:”) 

jestliže n % 2 == 0:

    tisk ("sudé")

jiný:

    tisk (“lichý”)

Mějte na paměti, že Python používá k deklaraci složitých kódových konstrukcí dvojtečky.

Ve výše uvedeném kódu jsme definovali jako podmínku, že bychom měli zkontrolovat, zda je číslo celé číslo. Pokud ano, vrátí se false. Pokud ne, pak je to pravda.

V druhé části kódu, kde je použit operátor if, použili jsme operátor % k nalezení zbytku po operaci dělení. Dalším krokem je zkontrolovat, zda je číslo sudé. Pokud ne, pak je v tomto případě zbytek jedna. Podle toho je číslo liché. 

Jednoduše řečeno, výše uvedený kód nejprve zkontroluje, zda řetězec zadaný uživatelem je číslo. Pokud ano, provede se druhá kontrola, zda existuje zbytek dělení dvěma. Ale druhý blok nebude proveden, dokud nebude hodnota zadaná uživatelem číselná.

To znamená, že smyčka bude pravidelně prováděna, dokud nenastane podmínka. V této situaci to funguje takto. 

To znamená, že můžete jít z opačného směru: opakovat určitou akci, dokud se událost nestane nepravdivou.

Analýza kódu

Nyní se podívejme podrobněji, jak tento kód funguje. Abychom to mohli udělat, analyzujeme jej krok za krokem.

  1. Nejprve uživatel zadá řetězec, který je akceptován proměnnou n. 
  2. Pomocí smyčky zatímco kontroluje se typ této proměnné. Při prvním vstupu se nerovná int. Proto se na základě testu zjistí, že tato podmínka je pravdivá. Proto je zadáno tělo smyčky.
  3. S pomocí operátora vyzkoušet pokoušíme se převést řetězec na číslo. Pokud se tak stane, nedojde k žádné chybě. Není tedy potřeba jej zpracovávat. Proto se interpret vrátí na začátek cyklu a podle výsledků kontroly se ukáže, že se stal celým číslem. Pojďme tedy ke kroku 7
  4. Pokud byl převod neúspěšný, je vyvolána chyba ValueError. V tomto případě je tok programu odeslán do handleru kromě.
  5. Uživatel zadá novou hodnotu, která je přiřazena proměnné n.
  6. Tlumočník se vrátí ke kroku 2 a provede kontrolu znovu. Pokud se jedná o celočíselnou hodnotu, přejděte ke kroku 7. Pokud ne, provede se převod znovu podle kroku 3.
  7. S pomocí operátora if Určuje, zda po dělení čísla 2 existuje zbytek. 
  8. Pokud ne, vrátí se text „sudý“.
  9. Pokud ne, vrátí se text „lichý“.

Zvažte nyní takový příklad. Pokuste se určit, kolikrát tento cyklus projde?

celkem = 100 

i = 0

zatímco já < 5:

    n = int(vstup())

    celkem = celkem — n

    i = i + 1 

tisk („Zbývající“, celkem)

Správná odpověď je 5. Zpočátku hodnota proměnné i – nula. Interpret zkontroluje, zda se proměnná rovná i 4 nebo méně. Pokud ano, vrátí se hodnota. pravdivýa smyčka se provede odpovídajícím způsobem. Hodnota se zvýší o jednu.

Po první iteraci se hodnota proměnné stane 1. Provede se kontrola a program pochopí, že toto číslo je opět menší než 5. Podle toho se tělo smyčky provede podruhé. Protože jsou kroky podobné, hodnota se také zvýší o jednu a proměnná se nyní rovná 2.

Tato hodnota je také menší než pět. Poté se smyčka provede potřetí a přidá se k proměnné i 1 a je mu přiřazena hodnota 3. To je opět méně než pět. A tak přichází na řadu šestá iterace cyklu, při které je hodnota proměnné i rovná se 5 (koneckonců to bylo původně nula, pokud si pamatujeme). V souladu s tím tato podmínka neprojde testem a smyčka se automaticky ukončí a provede se přechod k dalšímu kroku, který je mimo ni (nebo ukončení programu, nejsou-li uvedeny následující kroky).

Cyklus může probíhat i v opačném směru. Zde je příklad kódu, kde se při každé následující iteraci jedna odečítá od aktuální hodnoty proměnné. 

celkem = 100 

zatímco celkem > 0:

    n = int(vstup())

    celkem = celkem — n 

tisk („Vyčerpaný zdroj“)

Zkuste uhodnout, co tento program dělá! Představte si to v proměnné celkem jsou uloženy informace o zdroji programu. Pokaždé, když interpret zkontroluje, zda zdroj existuje. Pokud ne, zobrazí se text „Vyčerpaný zdroj“ a program se zavře. A s každou iterací cyklu se zdroj snižuje o číslo, které uživatel zadá.

A teď domácí úkol. Zkuste změnit výše uvedený kód tak, aby se proměnná nemohla fyzicky stát zápornou. 

4 Komentáře

  1. si kód ahaan usoo gudbi

  2. Ahoj

  3. lol

Napsat komentář