NOVINKA: Kurz kybernetickej bezpečnosti teraz už od 0 €. Staň sa žiadaným profesionálom. Zisti viac:
NOVINKA: Staň sa dátovým analytikom od 0 € a získaj istotu práce, lepší plat a nové kariérne možnosti. Viac informácií:

11. diel - Cyklus while v Pythone

V predchádzajúcej lekcii, Cyklus for v Pythone, sme sa zaoberali cyklom for a vytvorili sme program na malú násobilku a mocninátor.

V dnešnom Python tutoriáli sa najskôr naučíme používať cyklus while a potom vylepšíme program kalkulačky.

Cyklus while

Cyklus while funguje trochu inak ako cyklus for. Jednoducho opakuje príkazy v bloku, kým platí podmienka. Syntax cyklu je takáto:

while (condition):
    # commands

Pokiaľ vás napadá, že prostredníctvom cyklu while je možné urobiť aj cyklus for, máte pravdu :) Cyklus for je vlastne špeciálny prípad cyklu while. Cyklus while sa ale používa na trochu iné veci, pretože v jeho podmienke často máme napr. metódu vracajúcu logickú hodnotu True / False.

Príklady použitia cyklu

Poďme si urobiť niekoľko jednoduchých príkladov na precvičenie cyklu while.

Rad

Pomocou cyklu while by sme urobili číselný rad takto:

i = 1
while i <= 10:
    print(i, end = " ")
    i += 1

To ale nie je ideálne použitie cyklu while.

Kalkulačka

Ako ďalší príklad si vezmeme našu kalkulačku z predchádzajúcich lekcií. Opäť ju trochu vylepšíme, konkrétne o možnosť zadať viac príkladov. Program teda hneď neskončí, ale spýta sa používateľa, či si praje spočítať ďalší príklad. Pripomeňme si pôvodnú verziu kódu (teda tu s konštrukciou match, ale pokojne môžeme použiť aj verziu bez tejto konštrukcie, záleží na nás):

print("Welcome to calculator!")
a = float(input("Enter first number: "))
b = float(input("Enter second number: "))
print("Choose one of the following operations: ")
print("1 - addition")
print("2 - subtraction")
print("3 - multiplication")
print("4 - division")
option = int(input())
result = 0.0
match option:
    case 1:
        result = a + b
    case 2:
        result = a - b
    case 3:
        result = a * b
    case 4:
        if b != 0:
            result = a / b
        else:
            print("Division by zero is not allowed!")
            result = "N/A"

if option > 0 and option < 5:
    print(f"Result: {result}")
else:
    print("Invalid option")
print("Thank you for using calculator.")

Teraz budeme chcieť celý kód vložiť do cyklu while. Našou podmienkou bude, že používateľ zadá yes, budeme teda kontrolovať obsah premennej goOn. Spočiatku bude táto premenná nastavená na hodnotu yes, aby sa program vôbec spustil, potom do premennej necháme načítať používateľovu voľbu.

S takouto úpravou nám pomôže Copilot. Zadáme mu napríklad nasledujúci prompt: "Kód kalkulačky sa spustí iba raz. Pridaj preto celý kód do bloku while. Kým používateľ na otázku, či chce pokračovať, odpovedá "yes", kód bude ďalej pokračovať.".

Výstup od Copilota bude vyzerať podobne ako nižšie:

print("Welcome to calculator!")
goOn= "yes"
while (goOn == "yes"):
    a = float(input("Enter first number: "))
    b = float(input("Enter second number: "))
    print("Choose one of the following operations: ")
    print("1 - addition")
    print("2 - subtraction")
    print("3 - multiplication")
    print("4 - division")
    option = int(input())
    result = 0.0
    match option:
        case 1:
            result = a + b
        case 2:
            result = a - b
        case 3:
            result = a * b
        case 4:
            if b != 0:
                result = a / b
            else:
                print("Division by zero is not allowed!")
                result = "N/A"

    if option > 0 and option < 5:
        print(f"Result: {result}")
    else:
        print("Invalid option")
    goOn = input("Would you like to make another calculation? [yes/no]: ")
print("Thank you for using calculator.")

Výstup AI sa môže líšiť. Názvy premenných môžu byť iné, podmienka cyklu môže byť napísaná inak alebo sa môže mierne líšiť celá štruktúra programu. To je v poriadku. Dôležité je, aby program fungoval správne, cyklus sa opakoval podľa vstupu používateľa a my sme rozumeli tomu, čo kód robí.

Výstup programu:

Calculator enhancement:
Welcome to calculator!
Enter first number: 12
Enter second number: 128
Choose one of the following operations:
1 - addition
2 - subtraction
3 - multiplication
4 - division
1
Result: 140
Would you like to make another calculation? [yes/no]: yes
Enter first number: -10,5
Enter second number:

Našu aplikáciu je možné teraz používať viackrát a je už takmer hotová. Už toho vieme celkom dosť, začína to byť zábava, však? :)

Zhrnutie lekcie

Cyklus while opakuje blok príkazov tak dlho, kým platí jeho podmienka. Používame ho hlavne vtedy, keď dopredu nevieme, koľkokrát sa má určitá časť programu opakovať. Podmienka sa musí počas programu vedieť zmeniť, inak by cyklus bežal stále. V ukážke sme pomocou cyklu while upravili kalkulačku tak, aby sa po výpočte spýtala, či chceme zadať ďalší príklad. Program sa potom opakuje, kým používateľ odpovedá napríklad yes.

V nasledujúcom cvičení, Riešené úlohy k 10.-11. lekcii Pythonu, si precvičíme nadobudnuté skúsenosti z predchádzajúcich lekcií.


 

Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 51x (1.45 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Python

 

Predchádzajúci článok
Cyklus for v Pythone
Všetky články v sekcii
Základné konštrukcie jazyka Python
Preskočiť článok
(neodporúčame)
Riešené úlohy k 10.-11. lekcii Pythonu
Článok pre vás napísal Karel Zaoral
Avatar
Užívateľské hodnotenie:
154 hlasov
Karel Zaoral
Aktivity