IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

4. diel - Cykly v Pythone, funkcia range () a výraz pass

V predchádzajúcom kvíze, Kvíz - Premenné, podmienky, dátové typy v Pythone, sme si overili nadobudnuté skúsenosti z predchádzajúcich lekcií.

V minulej lekcii, Kvíz - Premenné, podmienky, dátové typy v Pythone , sme si ukázali vetvenia, boolovské hodnoty a veľa ďalšieho. Dnes si v tutoriálu ukážeme ako na cykly v Pythone, funkciu range() a výraz pass.

Ako už slovo cyklus napovie, niečo sa bude opakovať. Keď chceme v programe niečo urobiť 100x, určite nebudeme písať pod seba 100x ten istý kód, ale vložíme ho do cyklu. Máme dva druhy cyklov - cyklus while a cyklus sa syntaxou for..in. Samozrejme si ukážeme praktické príklady.

while

Cyklus while je najjednoduchšie cyklus v Pythone, jeho syntax je nasledujúca:

while podmienka:
    blok_příkazů
else:
    blok_příkazů

Blok while pokračuje vo vykonávaní príkazov tak dlho, kým platí podmienka. Ak podmienka neplatí, vykoná sa nepovinný blok else. Blok else sa ale nevykoná v prípade, že sa z cyklu vyskočí napr. Príkazy break (ukážeme si za chvíľu) alebo return (ukážeme si v ďalšej lekcii).

Teraz si skúsime vypísať čísla od jednej do desiatich. Otvorte si interaktívne konzolu Pythone, kód je nasledujúci:

cislo = 1
while (cislo <= 10):
    print(cislo)
    cislo = cislo + 1 #zvýšime číslo o jednu - inak by cyklus nikdy neskončil

výsledok:

Konzolová aplikácia
1
2
3
4
5
6
7
8
9
10

Tu je príklad vypísanie párnych čísel:

print("Program vypíše všetky párne čísla.")
maximum = int(input("Zadajte maximálnu číslo: "))
cislo = 0
while (cislo <= maximum):
    if (cislo % 2 == 0): #číslo je párne
        print(cislo)
    cislo = cislo + 1
input("\nProgram ukončíte stlačením ľubovoľného klávesu...")

Do bloku while môžeme pridať aj príkazy break a continue. Príkaz break z cyklu vyskočí, continue v cykle skočí na začiatok bloku príkazov.

for... in

Cyklus for...in má syntax nasledujú:

for premenná in iterovatelný_objekt:
    blok_příkazů
else:
    blok_příkazů

Premennú určite všetci poznáte :) Iterovatelný objekt je napríklad reťazec. Ďalej for podporuje aj príkazy continue a break.

Cvičenie z minulej lekcie si tým pádom môžeme zjednodušiť:

print("Program zistí či dané slovo obsahuje samohlásky.")
slovo = input("Zadajte slovo: ")
samohlasky = False
for znak in slovo:
    if znak in "aáeéěiíoóuúůyý":
        samohlasky = True
        break
if samohlasky:
    print(slovo, "obsahuje samohlásky.")
else:
    print(slovo, "neobsahuje samohlásky.")
input("")

Môžeme si napísať aj program pre zistenie počtu samohlások a spoluhlások v slove:

print("Program zistí z čoho sa skladá slovo.")
slovo = input("Zadajte slovo: ")
samohlasky = 0
souhlasky = 0
ostatni = 0
cisel = 0
for znak in slovo:
    if znak in "aáeéěiíoóuúůyý":
        samohlasky = samohlasky + 1
    elif znak in "bcčdďfghjklmnňpqrřsštťvwxzž":
        souhlasky = souhlasky + 1
    elif znak in "0123456789":
        cisel = cisel + 1
    else:
        ostatni = ostatni + 1
print(slovo, "má: ")
print("samohlások", samohlasky)
print("spoluhlások", souhlasky)
print("čísel", cisel)
print("ostatných znakov...", ostatni)
input("\nAplikáciu ukončíte stlačením ľubovoľného klávesu...")

Takto aplikácie vyzerá:

Konzolová aplikácia
Program zistí z čoho sa skladá slovo.
Zadajte slovo: abeceda100-
abeceda100- má:
samohlások 4
spoluhlások 3
čísel 3
ostatných znakov... 1

Aplikáciu ukončíte stlačením ľubovoľného klávesu...

range()

Ďalšie iterovatelný objekt nám poskytne funkcie range(). Tá vracia čísla vygenerovaná funkcií.

Syntaxou je niekoľko:

  • range(n) - vráti čísla od nuly do n-1
  • range(m, n) - vráti čísla od m do n-1
  • range(m, n, i) - vráti čísla od m a každé ďalšie i -te číslo do n-1

Príklady:

Konzolová aplikácia
>>> for cislo in range &lt;4&gt;:
...     print&lt;cislo&gt;
...
0
1
2
3
>>> for cislo in range &lt;2, 5&gt;:
...     print&lt;cislo&gt;
...
2
3
4
>>> for cislo in range &lt;3, 10, 2&gt;:
...     print&lt;cislo&gt;
...
3
5
7
9
>>>

pass

Kľúčové slovo Pythone pass sa používa v podmienkach (alebo kdekoľvek inde), pričom znamená, že daná časť kódu nič nerobí.

Príklad:

print("Dotieravá aplikácie")
pokracovat = True
while pokracovat:
    slovo = input("\nNapíšte Python pre ukončenie: ")
    if (slovo == "Python" or slovo == "python"):
        print("\nSlovo zadané!")
        pokracovat = False
    else:
        pass # nič sa nestane
input("\nAplikáciu ukončíte stlačením ľubovoľného klávesu...")

Kalkulačka

Teraz si skúsime vylepšiť našej kalkulačku. Program nám funguje, ale kalkulačka je len na "jedno" použitie. Ak chceme zadať ďalší príklad, musíme program spustiť znova. Preto si teraz kalkulačku mierne vylepšíme jedným cyklom a podmienkou :) Hlavná časť kódu kalkulačky bude uzavretá v cykle, ktorý sa bude opakovať kým používateľ kalkulačku neukončí.

Tu je kód kalkulačky:

print("Kalkulačka\n")
pokracovat = True
while pokracovat:
    prvni_cislo = int(input("Zadajte prvé číslo: "))
    druhe_cislo = int(input("Zadajte druhé číslo: "))
    print("1 - sčítanie")
    print("2 - odčítanie")
    print("3 - násobenie")
    print("4 - delenie")
    print("5 - umocňovanie")
    cislo_operace = int(input("Zadajte číslo operácie: "))
    if cislo_operace == 1:
        print("Ich súčet je:", prvni_cislo + druhe_cislo)
    elif cislo_operace == 2:
        print("Ich rozdiel je:", prvni_cislo - druhe_cislo)
    elif cislo_operace == 3:
        print("Ich súčin je:", prvni_cislo * druhe_cislo)
    elif cislo_operace == 4:
        print("Ich podiel je:", prvni_cislo / druhe_cislo)
    elif cislo_operace == 5:
        print(prvni_cislo, "na", druhe_cislo, "je:", prvni_cislo ** druhe_cislo)
    else:
        print("Neplatná voľba!")
    nezadano = True
    while nezadano:
        odpoved = input("\nPrajete si zadať ďalší príklad? y / n: ")
        if (odpoved == "y" or odpoved == "Y"):
            nezadano = False
        elif (odpoved == "n" or odpoved == "N"):
            nezadano = False
            pokracovat = False
        else:
            pass
input("\nStlačte ľubovoľný kláves...")

A toto je pre tento diel všetko. V budúcej lekcii, Riešené úlohy k 4. lekcii Pythone , si ukážeme prácu s n-ticami, zoznamy a funkcie zip() a len().

V nasledujúcom cvičení, Riešené úlohy k 4. lekcii Pythone, 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é 978x (2.27 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Python

 

Predchádzajúci článok
Kvíz - Premenné, podmienky, dátové typy v Pythone
Všetky články v sekcii
Základné konštrukcie jazyka Python
Preskočiť článok
(neodporúčame)
Riešené úlohy k 4. lekcii Pythone
Článok pre vás napísal gcx11
Avatar
Užívateľské hodnotenie:
15 hlasov
(^_^)
Aktivity