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 253x (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?
12 hlasů
(^_^)
Aktivity (2)

 

 

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

Avatar
xpoproci
Člen
Avatar
xpoproci:27.11.2015 16:13

Zdravim v predposlednom riadku mas zle zapisany logicky operator ma to byt

soucet >= x2

a nie

soucet => x2
Odpovědět 27.11.2015 16:13
Motto
Avatar
 
Odpovědět 28.11.2015 13:16
Avatar
Vojtěch Přibáň:19.10.2016 23:18

místo příkazu for by se dal jednoduše použít cyklus while:

seznam = ["a", "b", "c", "d"]
for x  in seznam:
    print x
#udela to same jako:
cislo = 0
while True:
    if cislo == len(seznam):
        break
    print seznam[(cislo)]
    cislo += 1*

i tak si člověk může představit funkci příkazu for

Editováno 19.10.2016 23:19
 
Odpovědět 19.10.2016 23:18
Avatar
gcx11
Redaktor
Avatar
Odpovídá na Vojtěch Přibáň
gcx11:20.10.2016 15:29

Osobně mi to nepřijde jednodušší. Je to více kódu.

 
Odpovědět 20.10.2016 15:29
Avatar
Odpovídá na gcx11
Vojtěch Přibáň:20.10.2016 15:51

když jsem příkaz for viděl poprvé, tak jsem měl trochu problém přijít na to, co vlastně dělá. tato interpretace má za účel pomoct těm, co mají stejný problém. samozřejmě že je to zbytečně dlouhý zápis.

 
Odpovědět 20.10.2016 15:51
Avatar
Jura
Člen
Avatar
Jura:20. června 15:14

Ahoj všem. Jsem začátečník v programování (nikoli v IT sféře kde pracuji (testy aplikací, SQL atd.) a Python mi přijde jak rozumná volba pro začátek. Zatím vše chápu s přehledem, nicméně k této výukové sekci mám otázku. Pokud je dost hloupá, předem se omlouvám :D. Jedná se mi o poslední příklad "Kalkulačka". Nechtěl jsem to "tupě" opsat a tak jsem to zkusil svou cestou a světe div se, ono to taky funguje, i když jsem úplně vynechal část
..."nezadano = True
while nezadano:"......
a samozřejmě návaznosti na ni. Chci se zeptat co je špatně na mé verzi, respektive kde by mě to mohlo doběhnout, že to nemám podle příkladu, popřípadě vysvětlit, proč je verze v příkladu lepší. Předem díky moc všem!

print ('Kalkulačka\n')
pokracuj= True
while pokracuj:
n1 = float(input('Za­dejte první číslo:'))
n2 = float(input('Za­dejte druhé číslo:'))
print("1 - sčítání")
print("2 - odčítání")
print("3 - násobení")
print("4 - dělení")
volba= int(input('zadej číslo operace pro výpočet:'))
if volba==1:
print('součet čísel', n1, 'a', n2, 'je:', n1+n2)
elif volba==2:
print('rozdíl čísel', n1, 'a', n2, 'je:', n1-n2)
elif volba==3:
print('násobek čísel', n1, 'a', n2, 'je:', n1*n2)
elif volba==4:
print('podíl čísel', n1, 'a', n2, 'je:', n1/n2)
else:
print('neplatná volba')

odpoved= input('\nPřejete si zadat další příklad? y / n\n ')
if (odpoved =='y' or odpoved=='Y'):
pokracuj=True
elif(odpoved=='n' or odpoved=='N'):
pokracuj=False
else:
pass
input('stiskni klavesu')

 
Odpovědět 20. června 15:14
Avatar
Jura
Člen
Avatar
Odpovídá na Jura
Jura:20. června 15:44

Omlouvám se za formátování, tak ještě jednou a lépe.

print ('Kalkulačka\n')
pokracuj= True
while pokracuj:
    n1 = float(input('Zadejte první číslo:'))
    n2 = float(input('Zadejte druhé číslo:'))
    print("1 - sčítání")
    print("2 - odčítání")
    print("3 - násobení")
    print("4 - dělení")
    volba= int(input('zadej číslo operace pro výpočet:'))
    if volba==1:
           print('součet čísel', n1, 'a', n2, 'je:', n1+n2)
    elif volba==2:
           print('rozdíl čísel', n1, 'a', n2, 'je:', n1-n2)
    elif volba==3:
           print('násobek čísel', n1, 'a', n2, 'je:', n1*n2)
    elif volba==4:
           print('podíl čísel', n1, 'a', n2, 'je:', n1/n2)
    else:
           print('neplatná volba')

    odpoved= input('\nPřejete si zadat další příklad? y / n\n ')
    if (odpoved =='y' or odpoved=='Y'):
                   pokracuj=True
    elif(odpoved=='n' or odpoved=='N'):
                   pokracuj=False
    else:
        pass
input('stiskni klavesu')
 
Odpovědět 20. června 15:44
Avatar
gcx11
Redaktor
Avatar
Odpovídá na Jura
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
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 59. Zobrazit vše