Učíme sa Python – časť 5. (while cyklus)

0

WHILE CYKLUS

Skúsme si rovno na príklade demonštrovať, ako funguje while cyklus:

i = 0
while i < 6:
    print(i)
    i = i + 1

print("koniec")

Čo sa stane ak tento kód pustíme? Výstup bude vyzerať nasledovne:

0
1
2
3
4
5
koniec

While cyklus je podobný ako for cyklus. Má ale pár rozdieľov.

Podmienka vo while cykle

Vyššie máme podmienku while i < 6:

Všetko pod touto podmienkou (odsadený kód. print sa už neráta) sa bude vykonávať dovtedy, dokým platí tvrdenie, že i je menšie ako 6. While z angličtiny znamená „Pokiaľ“.

Čo by sa stalo, ak by sme tam nemali nasledovný riadok? i = i + 1 ?
Donekonečna by sme vypisovali i, resp. počiatočnú hodnotu i a teda číslo 0.

Cieľom je, aby sa podmienka niekedy prerušila a program mohol ísť ďalej a nebyť donekonečna zaseknutý v tomto while cykle. Potom by program nikdy neskončil, vyskúšajte si to :). Nebojte, nevybuchne  vám počítač.

BREAK

Vo while cykle sa zvykne používať príkaz break.
Ukážme si znova na príklade.

j = 0
while j < 10:
    if (j == 5):
        break
    print(j)
    j = j + 1


print("koniec")

Ak spustíme tento kód tak nám Pythol Shell vypíše toto:

0
1
2
3
4
koniec

Ako podmienku while cyklu sme mali, že „j“ má byť menšie ako 10. Ale ak je „j“ rovné 5, tak použijeme príkaz break. Tento príkaz zastaví while cyklus, a následne program bude pokračovať kódom, ktorý sa nachádza pod while cyklom.

CONTINUE

Taktiež máme k dispozícii príkaz continue. Po tomto príkaze sa okamžite skončí vykonávanie príkazov vo while cykle, a prejde znova na začiatok. Najlepšie sa to pochopí na príklade.

j = 0
while j < 3:
    if (j == 1):
        j = j + 1
        continue
    else:
        print(j)
        j = j + 1
        
    print("Vypisal som ")

print("koniec")

Program vypíše:

0
Vypisal som 
2
Vypisal som 
koniec

Hmmm okej. A čo sa stane, keď dám preč príkaz continue? A teda kód bude vyzerať takto?

j = 0
while j < 3:
    if (j == 1):
        j = j + 1
    else:
        print(j)
        j = j + 1
        
    print("Vypisal som ")

print("koniec")


Presne toto:

0
Vypisal som 
Vypisal som 
2
Vypisal som 
koniec

Vidíte ten rozdieľ? V tomto prípade máme o jedno „Vypisal som“ navyše. Prečo? V tomto upravenom kóde bez continue, máme príkaz print(„Vypisal som „) ktorý sa spustí pri každej iterácie. Čiže aj keď je „j“ 0, 1 či 2.
Avšak s kódom, ktorý obsahuje continue, sa všetky ďalšie príkazy, ktoré by sa inak mali vykonávať, preskočia. A teda keď je „j“ rovné 1, tak sa nespustí príkaz print(„Vypisal som „)

Príklady

Máte radi Python?

Nasledujúci kód sa vás bude dookola pýtať, či máte radi Python, až kým mu nepoviete ano.
Skúste si to spustiť.

odpoved = "nie"
while odpoved == "nie":
    moja_odpoved = input("Mas rad Python? ")
    if (moja_odpoved == "ano"):
        odpoved = "ano"

print("Super")

Šťastné číslo

Úloha znie nasledovne:
Spravte premennú stastne_cislo a dajte jej nejakú hodnotu. (Najlepšie vaše štastné číslo, ktoré je menšie ako 10). Vo while cykle sa pýtajte používateľa, aby si tipol vaše šťastné číslo. Pýtajte sa ho dovtedy, dokým si netipne správne. Ak sa mu to napokon podarí, tak ho pochváľte.

Riešenie:

tipovane_stastne_cislo = 0
stastne_cislo = 7

while(tipovane_stastne_cislo != stastne_cislo):
    tipovane_stastne_cislo = int(input("No skus.. "))

print("Gratulujeem.")

 


Pridaj komentár

Vaša e-mailová adresa nebude zverejnená.