Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

4. díl - Cykly v Pythonu, funkce range() a výraz pass

Python Základní konstrukce Cykly v Pythonu, funkce range() a výraz pass

ONEbit hosting Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem. Vydávání, hosting a aktualizace umožňují jeho sponzoři.

V minulé lekci, Booleovské hodnoty, logické operátory a větvení v Pythonu, jsme si ukázali větvení, booleovské hodnoty a spoustu dalšího. Dnes si v tutoriálu ukážeme jak na cykly v Pythonu, funkci range() a výraz pass.

Jak již slovo cyklus napoví, něco se bude opakovat. Když chceme v programu něco udělat 100x, jistě nebudeme psát pod sebe 100x ten samý kód, ale vložíme ho do cyklu. Máme dva druhy cyklů - cyklus while a cyklus se syntaxí for in. Samozřejmě si ukážeme praktické příklady.

While

Cyklus while je nejjednodušší cyklus v Pythonu, jeho syntaxe je následující:

while podmínka:
    blok_příkazů
else:
    blok_příkazů

Blok while pokračuje v provádění příkazů tak dlouho, dokud platí podmínka. Pokud podmínka neplatí, provede se nepovinný blok else. Blok else se ale neprovede v případě, že se z cyklu vyskočí např. příkazy break (ukážeme si za chvíli) nebo return (ukážeme si v další lekci).

Teď si zkusíme vypsat čísla od jedné do desíti. Otevřete si interaktivní konzoli Pythonu, kód je následující:

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

Výsledek:

While cyklus v Pythonu

Zde je příklad vypsání sudých čísel:

print("Program vypíše všechna sudá čísla.")
maximum = int(input("Zadejte maximální číslo: "))
cislo = 0
while (cislo <= maximum):
    if (cislo % 2 == 0): #číslo je sudé
        print(cislo)
    cislo = cislo + 1
input("\nProgram ukončíte stisknutím libovolné klávesy...")

Do bloku while můžeme přidat i příkazy break a continue. Break z cyklu vyskočí, continue v cyklu skočí na začátek bloku příkazů.

For

Cyklus for má syntaxi následují:

for proměnná in iterovatelný_objekt:
    blok_příkazů
else:
    blok_příkazů

Proměnnou jistě všichni znáte :) Iterovatelný objekt je například řetězec. Dále for podporuje i příkazy continue a break.

Cvičení z minulé lekce si tím pádem můžeme zjednodušit:

print("Program zjistí zda dané slovo obsahuje samohlásky.")
slovo = input("Zadejte 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 napsat i program pro zjištění počtu samohlásek a souhlásek ve slově:

print("Program zjistí z čeho se skládá slovo.")
slovo = input("Zadejte 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ňprřsštťvwxzž":
        souhlasky = souhlasky + 1
    elif znak in "0123456789":
        cisel = cisel + 1
    else:
        ostatni = ostatni + 1
print(slovo, "má: ")
print("samohlásek", samohlasky)
print("souhlásek", souhlasky)
print("čísel", cisel)
print("ostatních znaků...", ostatni)
input("\nAplikaci ukončíte stisknutím libovolné klávesy...")

Takto aplikace vypadá:

Samohlásky a souhlásky ve větě v Pythonu

Range()

Další iterovatelný objekt nám poskytne funkce range(). Ta vrací čísla vygenerovaná funkcí.

Syntaxí je několik:

range(n) - vrátí čísla od nuly do n-1

range(m, n) - vrátí čísla od m do n-1

range(m, n, i) - vrátí čísla od m a každé další i-té číslo do n-1

Příklady:

Funkce range v Pythonu

Pass

Klíčové slovo Pythonu pass se používá v podmínkách (nebo kdekoliv jinde), přičemž znamená, že daná část kódu nic nedělá.

Příklad:

print("Dotěrná aplikace")
pokracovat = True
while pokracovat:
    slovo = input("\nNapište Python pro ukončení: ")
    if (slovo == "Python" or slovo == "python"):
        print("\nSlovo zadáno!")
        pokracovat = False
    else:
        pass # nic se nestane
input("\nAplikaci ukončíte stisknutím libovolné klávesy...")

Kalkulačka

Nyní si zkusíme vylepšit naší kalkulačku. Program nám funguje, ale kalkulačka je jen na "jedno" použití. Chceme-li zadat další příklad, musíme program spustit znovu. Proto si nyní kalkulačku mírně vylepšíme jedním cyklem a podmínkou :) Hlavní část kódu kalkulačky bude uzavřena v cyklu, který se bude opakovat dokud uživatel kalkulačku neukončí.

Zde je kód kalkulačky:

print("Kalkulačka\n")
pokracovat = True
while pokracovat:
    prvni_cislo = int(input("Zadejte první číslo: "))
    druhe_cislo = int(input("Zadejte druhé číslo: "))
    print("1 - sčítání")
    print("2 - odčítání")
    print("3 - násobení")
    print("4 - dělení")
    print("5 - umocňování")
    cislo_operace = int(input("Zadejte číslo operace: "))
    if cislo_operace == 1:
        print("Jejich součet je:", prvni_cislo + druhe_cislo)
    elif cislo_operace == 2:
        print("Jejich rozdíl je:", prvni_cislo - druhe_cislo)
    elif cislo_operace == 3:
        print("Jejich součin je:", prvni_cislo * druhe_cislo)
    elif cislo_operace == 4:
        print("Jejich podíl je:", prvni_cislo / druhe_cislo)
    elif cislo_operace == 5:
        print(prvni_cislo, "na", druhe_cislo, "je:", prvni_cislo ** druhe_cislo)
    else:
        print("Neplatná volba!")
    nezadano = True
    while nezadano:
        odpoved = input("\nPřejete si zadat další příklad? y / n: ")
        if (odpoved == "y" or odpoved == "Y"):
            nezadano = False
        elif (odpoved == "n" or odpoved == "n"):
            nezadano = False
            pokracovat = False
        else:
            pass
input("\nStiskněte libovolnou klávesu...")

A toto je pro tento díl vše. V příští lekci, Seznamy v Pythonu, jejich základní funkce a metody, si ukážeme práci s n-ticemi, seznamy a funkce zip() a len().


 

Stáhnout

Staženo 267x (745 B)
Aplikace je včetně zdrojových kódů v jazyce python

 

 

Článek pro vás napsal gcx11
Avatar
Jak se ti líbí článek?
13 hlasů
(^_^)
Aktivity (2)

 

 

Komentáře
Zobrazit starší komentáře (56)

Avatar
gcx11
Redaktor
Avatar
gcx11:20. června 16:02

Pokud na konci zadáš něco jiného než y/Y/n/N, tak oproti ukázce se to zeptá na nový příklad. Ukázkový program nepovolí zadat nový příklad, dokud nebude odpověď y nebo Y.

 
Odpovědět 20. června 16:02
Avatar
Jura
Člen
Avatar
Odpovídá na gcx11
Jura:20. června 16:12

Áha! Díky!!

 
Odpovědět 20. června 16:12
Avatar
Peter Kontúr:10. září 21:32

Řekne mi prosím někdo k čemu je BREAK v tomto kódu? (jen jestli jsem něco nepřehlídnul)

print("Program zjistí zda dané slovo obsahuje samohlásky.")
slovo = input("Zadejte 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("")
Editováno 10. září 21:34
 
Odpovědět 10. září 21:32
Avatar
Døminik
Člen
Avatar
Døminik:29. září 15:49

Proč je po for "znak"

print("Program zjistí zda dané slovo obsahuje samohlásky.")
slovo = input("Zadejte 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("")

 
Odpovědět 29. září 15:49
Avatar
Odpovídá na Peter Kontúr
Honza Prosecký:29. září 23:26

Pokud totiz narazi na samohlasku, tak se nastavi promenna na true a break zastavi cyklus a kod polracuje dale

 
Odpovědět 29. září 23:26
Avatar
Odpovídá na Døminik
Honza Prosecký:29. září 23:29

Projizdi vsechny znaky ve slove. Neco jako projed kazdy "znak" ve "slove". To znamena treba slovo "ahoj", pak proiteruj vsechny znaky ve slove "ahoj". Je to jako prvek v poli

 
Odpovědět 29. září 23:29
Avatar
Dobrý Den
Člen
Avatar
Dobrý Den:29. října 16:39

Dobrý den, nemůžu přijít na to proč se mi i když napíšu "y" kalkulačka neopakuje, mohl by mi někdo napsat proč? Předem děkuji za odpověď.

print ("Kalkulačka\n")
pokracovat = True
prvniCislo = int(input("Zadejte první číslo: "))
druheCislo = int(input("Zadejte druhé číslo: "))
print("1 - sčítání\n2 - odčítání\n3 - násobení\n4 - dělení")
cisloOperace = int(input("Zadejte cislo operace: "))
if cisloOperace == 1:
print("Výsledek je: ",prvniCislo+dru­heCislo)
elif cisloOperace == 2:
print("Výsledek je: ",prvniCislo-druheCislo)
elif cisloOperace == 3:
print("Výsledek je: ",prvniCislo*dru­heCislo)
elif cisloOperace == 4:
print("Výsledek je: ",prvniCislo/dru­heCislo)
else:
print("Neplatné číslo operace!")
nezadano = True
while nezadano:
odpoved = input("Chcete počítat znovu? y/n: ")
if (odpoved == "y" or odpoved == "Y"):
nezadano = False
elif (odpoved == "n" or odpoved == "N"):
nezadano = False
pokracovat = False
else:
pass
input("\nStiskněte libovolnou klávesu...")

 
Odpovědět 29. října 16:39
Avatar
gcx11
Redaktor
Avatar
Odpovídá na Dobrý Den
gcx11:29. října 16:44

Chybí tam její opakování hned na třetím řádku:

while pokracovat:
 
Odpovědět 29. října 16:44
Avatar
Dobrý Den
Člen
Avatar
Odpovídá na Dobrý Den
Dobrý Den:29. října 16:54

uz mi to doslo XDDD

 
Odpovědět 29. října 16:54
Avatar
Dobrý Den
Člen
Avatar
Odpovídá na gcx11
Dobrý Den:29. října 16:54

Děkuji

 
Odpovědět  +1 29. října 16:54
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 66. Zobrazit vše