3. hodina – Funkce a cyklus for
Vestavěné funkce, opakování pomocí cyklu for a procházení řetězců.
Výklad a cvičení
Výklad si můžeš přečíst přímo na webu. Příklady procházej po pořadí a kód si zkoušej ve VS Code.
Vestavěné funkce, opakování pomocí cyklu for a procházení řetězců.
Výklad si můžeš přečíst přímo na webu. Příklady procházej po pořadí a kód si zkoušej ve VS Code.
Procházej příklady postupně, pak si vyzkoušej cvičení. Kód z bloků si můžeš zkopírovat do Python souboru ve VS Code a spustit. Příklady na jedné stránce na sebe mohou navazovat.
Funkce je pojmenovaná operace – kus hotové práce, který za nás Python udělá, když ho zavoláme jménem. Vlastně je používáme už od první lekce, jen jsme jim tak neříkali: print, input i int jsou všechno funkce.
Jak se funkce používá:
Napíšeme její jméno a za něj závorky ( ).
Do závorek můžeme dát vstup – říká se mu argument (třeba text nebo číslo). Kolik argumentů funkce chce, je u každé jiné: některé žádný nepotřebují, jiné vyžadují jeden a některé jich berou i víc. Sama si to určíš, až budeš psát vlastní funkce.
Funkce něco udělá. A jsou dva druhy:
buď nám VRÁTÍ výsledek, který si uložíme a dál s ním pracujeme,
nebo jen něco provede a žádnou užitečnou hodnotu zpět nedá.
Spusť soubor a projdi si příklady obou druhů.
print vypíše text na obrazovku. Argument je to, co má vypsat. Zpátky nám nic užitečného nedá – jen to vypíše.
print("Ahoj")
print umí přijmout i víc argumentů najednou, oddělených čárkou. Mezi ně sám doplní mezeru.
print("Ahoj", "Anno", 2025) # Ahoj Anno 2025
Některé funkce mají i pojmenované argumenty – napíšeme u nich jméno a rovnítko. print jich má dva užitečné: sep a end.
sep určuje, co se vypíše MEZI argumenty (místo mezery):
print(2, 3, 4, sep=", ") # 2, 3, 4
end určuje, co se vypíše NA KONCI (místo přechodu na nový řádek). Tyhle dva printy proto skončí na jednom řádku vedle sebe:
print("Ahoj", end=" ")
print("světe") # Ahoj světe
input se zeptá uživatele a jeho odpověď nám vrátí (jako text). Proto si ji ukládáme do proměnné.
jmeno = input("Jak se jmenuješ? ")
print("Ahoj,", jmeno)
int převede text na číslo a to číslo vrátí. Taky ho známe z minula.
odpoved = input("Kolik ti je let? ") # input vrátí text, třeba "30"
vek = int(odpoved) # int z textu udělá číslo 30
print("Za rok ti bude", vek + 1)
Zpět na téma: Vestavěné funkce · Další: Užitečné funkce: len, abs, round, min, max
Python má spoustu hotových funkcí. Projdeme si ty, které se hodí při počítání a práci s textem. Spusť soubor a sleduj výsledky.
len (z anglického length = délka) vrátí délku textu – kolik má znaků.
slovo = "Ahoj"
print(len(slovo)) # 4 slovo "Ahoj" má čtyři písmena
Argument můžeme dát rovnou, bez proměnné:
print(len("PyLadies")) # 8
A protože nám len výsledek vrací, můžeme s ním dál počítat:
delka = len("kolo")
print(delka + 1) # 5
abs (absolutní hodnota) – „zapomene" na znaménko mínus. Hodí se třeba na rozdíl dvou čísel, když nás nezajímá směr.
print(abs(-7)) # 7
print(abs(7)) # 7
print(abs(3 - 10)) # 7 z -7 udělá 7
round zaokrouhlí desetinné číslo.
print(round(3.14159)) # 3 bez dalšího údaje zaokrouhlí na celé číslo
print(round(3.7)) # 4
round umí zaokrouhlit i na určitý počet desetinných míst – napíšeme to jako druhý argument (oddělený čárkou).
print(round(3.14159, 2)) # 3.14 dvě desetinná místa
min najde nejmenší a max největší z hodnot. Do závorek můžeme dát víc čísel oddělených čárkou.
print(min(3, 8, 2)) # 2 nejmenší
print(max(3, 8, 2)) # 8 největší
Funkce se dají kombinovat s tím, co už umíme – třeba použít výsledek rovnou ve výpočtu nebo v porovnání:
print(max(10, 20) + 5) # 25
print(min(4, 9) < 5) # True nejmenší je 4, a 4 je menší než 5
Zpět na téma: Vestavěné funkce · Další: range a sum: posloupnost čísel
Někdy potřebujeme celou řadu čísel po sobě – třeba 0, 1, 2, 3, 4. Vypisovat je ručně by bylo zdlouhavé. Od toho je funkce range. Spusť soubor a sleduj výsledky.
range(5) vyrobí čísla od 0 do 4 (pět čísel, ale poslední se NEpočítá). Když range vypíšeme přímo, ukáže se jen "návod", ne samotná čísla:
print(range(5)) # range(0, 5) čísla zatím schovaná uvnitř
Že jsou uvnitř opravdu čísla, si ověříme pomocí dalších funkcí. sum sečte všechna čísla v posloupnosti.
print(sum(range(5))) # 10 protože 0 + 1 + 2 + 3 + 4 = 10
len spočítá, kolik čísel v posloupnosti je.
print(len(range(5))) # 5
min a max najdou nejmenší a největší číslo v posloupnosti.
print(min(range(5))) # 0
print(max(range(5))) # 4 poslední je o jedna míň než 5
range může začínat jinde než od nuly – dáme dvě čísla: OD, DO. Číslo DO se opět nepočítá.
print(sum(range(1, 5))) # 10 sečte 1 + 2 + 3 + 4
Pěkná ukázka síly range – součet čísel od 1 do 100 na jeden řádek:
print(sum(range(1, 101))) # 5050
Zpět na téma: Vestavěné funkce · Další: Cvičení: Vestavěné funkce
Každé cvičení má vlastní soubor ve složce lekce03-funkce-a-cyklus-for/01_vestavene_funkce/cviceni/. Otevři ho ve VS Code, doplň kód pod zadání a soubor spusť (Run). Řešení si rozklikni až po vlastním pokusu – tvoje řešení může vypadat jinak, a to je v pořádku.
Soubor: cviceni/01_delka_jmena.py
Ulož si do proměnné jmeno své jméno a vypiš, kolik má písmen.
jmeno = "Anna"
print(len(jmeno)) # 4
Soubor: cviceni/02_absolutni_hodnota.py
Vypiš absolutní hodnotu rozdílu čísel 4 a 11.
print(abs(4 - 11)) # 7 z -7 udělá abs kladné číslo
Soubor: cviceni/03_zaokrouhleni.py
Máš číslo 2.71828. Zaokrouhli ho na celé číslo a vypiš. Pak ho zaokrouhli na jedno desetinné místo a taky vypiš.
print(round(2.71828)) # 3
print(round(2.71828, 1)) # 2.7
Soubor: cviceni/04_nejvetsi_a_nejmensi.py
Máš tři čísla. Vypiš to největší a na dalším řádku to nejmenší.
a = 17
b = 4
c = 23
a = 17
b = 4
c = 23
print(max(a, b, c)) # 23
print(min(a, b, c)) # 4
Soubor: cviceni/05_soucet_do_deseti.py
Vypiš součet všech čísel od 1 do 10.
print(sum(range(1, 11))) # 55 pozor: DO se nepočítá, proto 11
Soubor: cviceni/06_vetsi_ze_dvou.py
Zeptej se uživatele na dvě čísla a vypiš to větší z nich.
prvni = int(input("Zadej první číslo: "))
druhe = int(input("Zadej druhé číslo: "))
print(max(prvni, druhe))
Soubor: cviceni/07_prepocet_sekund.py
Uživatel zadá počet sekund (třeba 3661). Přepočítej ho na hodiny, minuty a sekundy a vypiš je jako 1:1:1 jediným printem.
sekundy = int(input("Zadej počet sekund: "))
hodiny = sekundy // 3600 # kolik celých hodin
minuty = sekundy % 3600 // 60 # ze zbytku kolik celých minut
zbyle = sekundy % 60 # a co zbyde jsou sekundy
print(hodiny, minuty, zbyle, sep=":") # pro 3661 vypíše 1:1:1
Soubor: cviceni/08_cena_s_dph.py
Zboží stojí 1000 Kč bez DPH. Na jeden řádek vypiš cenu bez DPH i s DPH (21 %). Použij dva printy – první nech řádek pokračovat, druhý ho dokonči.
cena = 1000
cena = 1000
print("bez DPH:", cena, "Kč,", end=" ") # end=" " – řádek pokračuje
print("s DPH:", round(cena * 1.21), "Kč") # bez DPH: 1000 Kč, s DPH: 1210 Kč
Soubor: cviceni/09_tri_cisla_od_uzivatele.py
Zeptej se uživatele na tři čísla (klidně i záporná) a vypiš, jak velké je to největší z nich bez ohledu na znaménko. Např. z čísel -20, 5 a 12 je největší velikost 20.
a = int(input("Zadej první číslo: "))
b = int(input("Zadej druhé číslo: "))
c = int(input("Zadej třetí číslo: "))
print(max(abs(a), abs(b), abs(c))) # abs zahodí znaménko, max vybere největší
Zpět na téma: Vestavěné funkce · Další: Bonusová cvičení: Vestavěné funkce
Bonusy jsou pro rychlíky – když máš hotová cvičení a zbývá čas. Každý bonus má vlastní soubor ve složce lekce03-funkce-a-cyklus-for/01_vestavene_funkce/cviceni_bonusy/. Řešení si rozklikni až po vlastním pokusu – tvoje řešení může vypadat jinak, a to je v pořádku.
Soubor: cviceni_bonusy/01_rozpocitani_utraty.py
Uživatel zadá celkovou cenu útraty a počet lidí. Vypiš, kolik zaplatí každý, zaokrouhleno na dvě desetinná místa.
cena = int(input("Kolik jste utratili? "))
lidi = int(input("Kolik vás bylo? "))
print(round(cena / lidi, 2)) # pro 1000 a 3 vypíše 333.33
Soubor: cviceni_bonusy/02_prumer_do_n.py
Průměr od 1 do N. Uživatel zadá číslo N. Vypiš průměr všech čísel od 1 do N (součet čísel vyděl jejich počtem).
n = int(input("Zadej N: "))
prumer = sum(range(1, n + 1)) / n # +1, aby se počítalo i samotné N
print(prumer) # pro 10 vypíše 5.5
Soubor: cviceni_bonusy/03_nejlevnejsi_polozka.py
Cíl a rozpočet. Uživatel zadá cenu tří položek. Vypiš nejlevnější a nejdražší z nich a jestli se všechny tři vejdou do rozpočtu 1000 Kč.
cena1 = int(input("Cena 1: "))
cena2 = int(input("Cena 2: "))
cena3 = int(input("Cena 3: "))
print("Nejlevnější:", min(cena1, cena2, cena3))
print("Nejdražší:", max(cena1, cena2, cena3))
if cena1 + cena2 + cena3 <= 1000:
print("Vejdou se do rozpočtu.")
else:
print("Rozpočet nestačí.")
Procházej příklady postupně, pak si vyzkoušej cvičení. Kód z bloků si můžeš zkopírovat do Python souboru ve VS Code a spustit. Příklady na jedné stránce na sebe mohou navazovat.
Spusť soubor a sleduj, co se vypíše.
Často chceme něco zopakovat víckrát. Psát to pořád dokola je zdlouhavé – a co teprve stokrát! Od toho je cyklus: řekne Pythonu „udělej tohle N-krát".
Takhle by to vypadalo bez cyklu – nudné a zbytečně dlouhé:
print("Ahoj")
print("Ahoj")
print("Ahoj")
Cyklus for udělá totéž za nás. range(3) znamená tři opakování:
for cislo in range(3):
print("Ahoj")
Jak takový cyklus přečíst:
for je klíčové slovo pro opakování.cislo je proměnná, do které cyklus postupně ukládá čísla z range.range(3) určuje, která čísla projdeme, a tím i počet opakování.: je dvojtečka na konci řádku, stejně jako u if.Ta proměnná se opravdu postupně mění. range(5) dá čísla 0 až 4 (pět čísel, poslední je o jedna míň – to už známe z minula):
for cislo in range(5):
print(cislo) # vypíše 0, 1, 2, 3, 4 – každé na svůj řádek
Zpět na téma: Cyklus for · Další: for a range: různé rozsahy
range známe z minulé složky. V cyklu for ho teď využijeme naplno – určuje, přes která čísla cyklus projde. Spusť soubor a sleduj výsledky.
range od-do: čísla od prvního čísla do druhého (druhé se NEpočítá).
for cislo in range(1, 6):
print(cislo) # 1, 2, 3, 4, 5
range s krokem: range(od, do, krok) – o kolik se skáče. Tímhle vypíšeme sudá čísla:
for cislo in range(0, 10, 2):
print(cislo) # 0, 2, 4, 6, 8
Proměnnou z cyklu můžeme rovnou použít ve výpočtu:
for cislo in range(1, 6):
print(cislo, "na druhou je", cislo * cislo)
Důležité: co je odsazené, patří dovnitř cyklu a opakuje se. Co je pod cyklem BEZ odsazení, se provede až potom – jednou.
for cislo in range(3):
print("uvnitř cyklu:", cislo)
print("hotovo") # vypíše se jednou, až cyklus doběhne
V minulé složce jsme součet čísel udělali funkcí sum. Teď si ukážeme, jak k němu cyklus dojde „ručně" – krok za krokem. Tenhle trik se hodí pokaždé, když v cyklu něco postupně sbíráme. Spusť soubor a sleduj výsledky.
Trik: máme proměnnou a v každém kroku do ní něco přidáme. U sčítání začínáme na nule.
soucet = 0
for cislo in range(1, 6):
soucet = soucet + cislo # k dosavadnímu součtu přičti aktuální číslo
print(soucet) # 15 protože 1 + 2 + 3 + 4 + 5
(Krok za krokem to ukazuje obrázek cyklus_for_soucet_vizualizace.png.)
Počítadlo – kolikrát se něco stalo. Přičítáme pořád jedničku:
pocet = 0
for cislo in range(10):
pocet = pocet + 1
print("cyklus proběhl", pocet, "krát") # 10
Násobení v cyklu. Pozor – u násobení musíme začít na jedničce, ne na nule – násobení nulou by dalo vždycky nulu. Takhle spočítáme 1 * 2 * 3 * 4:
soucin = 1
for cislo in range(1, 5):
soucin = soucin * cislo
print(soucin) # 24

Zpět na téma: Cyklus for · Další: Vnořené cykly (cyklus v cyklu)
Cyklus můžeme dát dovnitř jiného cyklu. Říká se tomu vnořený cyklus. Pravidlo: pro KAŽDÝ průchod vnějšího cyklu proběhne celý vnitřní cyklus. Spusť soubor a sleduj výsledky.
Představ si hru o třech kolech a v každém kole dva pokusy. Vnějším cyklem jsou kola, vnitřním pokusy v rámci jednoho kola:
for kolo in range(1, 4):
print("Kolo", kolo)
for pokus in range(1, 3):
print(" pokus", pokus)
Odsazení určuje, co je uvnitř čeho: vnitřní cyklus je odsazený uvnitř vnějšího a řádek "Kolo" se provede jednou za kolo, "pokus" dvakrát.
Vnořený cyklus se hodí, když chceme víc hodnot na JEDEN řádek a pak skočit na další. Vypíšeme třeba mini kalendář – tři týdny pod sebou, každý s čísly dnů 1 až 7. Vnitřní cyklus vypíše jeden řádek (týden), vnější ho zopakuje. Pomůže end (drží řádek) a prázdný print() (zalomí):
for tyden in range(1, 4):
for den in range(1, 8):
print(den, end=" ") # dny 1 až 7 vedle sebe
print() # po celém týdnu skoč na nový řádek
Zpět na téma: Cyklus for · Další: Na ukázku: kreslení s želvou (turtle)
Tuhle ukázku si projdeme společně s lektorkou. Není určená k samostatnému spouštění doma; potřebné prostředí připraví lektorka.
Turtle je „želva", která po obrazovce kreslí čáru. Umí dvě věci: popojet dopředu a otočit se. Právě tady je krásně vidět síla cyklu for – místo abychom stejný příkaz psali pořád dokola, necháme ho zopakovat.
import turtle
Čtverec: čtyřikrát „popojeď dopředu a otoč se o 90 stupňů".
for strana in range(4):
turtle.forward(100) # popojeď o 100 kroků
turtle.left(90) # otoč se o 90 stupňů doleva
Zkus si pohrát s čísly:
(Otočka je vždycky 360 děleno počtem stran.)
turtle.done() # nechá okno otevřené, dokud ho nezavřeš
Každé cvičení má vlastní soubor ve složce lekce03-funkce-a-cyklus-for/02_cyklus_for/cviceni/. Otevři ho ve VS Code, doplň kód pod zadání a soubor spusť (Run). Řešení si rozklikni až po vlastním pokusu – tvoje řešení může vypadat jinak, a to je v pořádku.
Soubor: cviceni/01_cisla_do_deseti.py
Cyklem vypiš čísla od 1 do 10, každé na svůj řádek.
for cislo in range(1, 11):
print(cislo)
Soubor: cviceni/02_petkrat_pyladies.py
Cyklem vypiš pětkrát text "PyLadies".
for cislo in range(5):
print("PyLadies")
Soubor: cviceni/03_nasobky_tri.py
Cyklem vypiš násobky tří od 3 do 30 (tedy 3, 6, 9, ... až 30).
for cislo in range(3, 31, 3):
print(cislo)
Soubor: cviceni/04_soucet_do_sta.py
Spočítej součet všech čísel od 1 do 100 pomocí cyklu for (ne funkcí sum) a výsledek vypiš.
soucet = 0
for cislo in range(1, 101):
soucet = soucet + cislo
print(soucet) # 5050
Soubor: cviceni/05_mala_nasobilka.py
Uživatel zadá číslo. Cyklem vypiš jeho malou násobilku – tedy cislo * 1 až cislo * 10, každý řádek třeba "7 * 3 = 21".
cislo = int(input("Zadej číslo: "))
for nasobek in range(1, 11):
print(cislo, "*", nasobek, "=", cislo * nasobek)
Soubor: cviceni/06_mocnina_cyklem.py
Vypočítej 2 na desátou tak, že v cyklu desetkrát vynásobíš dvěma. Výsledek vypiš (má vyjít 1024).
vysledek = 1
for cislo in range(10):
vysledek = vysledek * 2
print(vysledek) # 1024
Zpět na téma: Cyklus for · Další: Bonusová cvičení: Cyklus for
Bonusy jsou pro rychlíky – když máš hotová cvičení a zbývá čas. Každý bonus má vlastní soubor ve složce lekce03-funkce-a-cyklus-for/02_cyklus_for/cviceni_bonusy/. Řešení si rozklikni až po vlastním pokusu – tvoje řešení může vypadat jinak, a to je v pořádku.
Soubor: cviceni_bonusy/01_faktorial.py
Uživatel zadá číslo N. Spočítej cyklem jeho faktoriál – tedy 1 * 2 * 3 * ... * N – a výsledek vypiš. (Faktoriál z 5 je 120.)
n = int(input("Zadej číslo: "))
faktorial = 1
for cislo in range(1, n + 1): # +1, aby se počítalo i samotné N
faktorial = faktorial * cislo
print(faktorial) # pro 5 vypíše 120
Soubor: cviceni_bonusy/02_soucet_sudych.py
Spočítej cyklem součet všech sudých čísel od 1 do 100 a vypiš ho.
soucet = 0
for cislo in range(2, 101, 2): # krok 2 = jen sudá čísla
soucet = soucet + cislo
print(soucet) # 2550
Soubor: cviceni_bonusy/03_sporici_ucet.py
Uživatel zadá počáteční částku na spořicím účtu. Úrok je 5 % ročně. Spočítej cyklem, kolik na účtu bude po deseti letech (každý rok se částka vynásobí 1.05), a výsledek vypiš.
castka = int(input("Kolik si ukládáš? "))
for rok in range(10):
castka = castka * 1.05
print(round(castka, 2)) # pro 1000 vypíše 1628.89
Procházej příklady postupně, pak si vyzkoušej cvičení. Kód z bloků si můžeš zkopírovat do Python souboru ve VS Code a spustit. Příklady na jedné stránce na sebe mohou navazovat.
Cyklus for umí projít nejen čísla z range, ale i písmena v textu. Napíšeme for pismeno in slovo: a proměnná se postupně nastaví na každé písmeno – jedno po druhém. Spusť soubor a sleduj výsledky.
Projdeme slovo znak po znaku:
slovo = "Ahoj"
for pismeno in slovo:
print(pismeno) # A, h, o, j – každé na svůj řádek
Proměnnou si můžeme pojmenovat jakkoli – tady třeba znak. A funguje to na jakýkoli text, klidně i od uživatele:
jmeno = input("Napiš svoje jméno: ")
for znak in jmeno:
print(znak, "!")
Zpět na téma: Procházení textu · Další: Podmínka uvnitř cyklu
Do cyklu můžeme dát if – rozhodne se u KAŽDÉHO průchodu zvlášť. Odsazení hlídá, co kam patří: if je uvnitř cyklu, jeho tělo ještě víc. Spusť soubor a sleduj výsledky.
Vypiš jen sudá čísla od 1 do 10:
for cislo in range(1, 11):
if cislo % 2 == 0:
print(cislo) # 2, 4, 6, 8, 10
Podmínka + počítadlo z minulé složky = spočítáme, kolik jich je. Kolik sudých čísel je od 1 do 20?
pocet = 0
for cislo in range(1, 21):
if cislo % 2 == 0:
pocet = pocet + 1
print("sudých čísel:", pocet) # 10
Šikovný pomocník: zápis pismeno in "aeiou" zjistí, jestli je písmeno jedno z těch v uvozovkách (vrátí True/False). V cyklu se skvěle hodí – třeba spočítat samohlásky ve slově:
slovo = "ananas"
samohlasky = 0
for pismeno in slovo:
if pismeno in "aeiou":
samohlasky = samohlasky + 1
print("samohlásek:", samohlasky) # 3
Zpět na téma: Procházení textu · Další: Cvičení: Procházení textu
Každé cvičení má vlastní soubor ve složce lekce03-funkce-a-cyklus-for/03_prochazeni/cviceni/. Otevři ho ve VS Code, doplň kód pod zadání a soubor spusť (Run). Řešení si rozklikni až po vlastním pokusu – tvoje řešení může vypadat jinak, a to je v pořádku.
Soubor: cviceni/01_analyza_vety.py
Analýza věty. Uživatel zadá větu. Projdi ji znak po znaku a vypiš počet znaků, počet samohlásek, počet mezer a počet slov ve větě. (Počet slov = počet mezer + 1.)
veta = input("Napiš větu: ")
samohlasky = 0
mezery = 0
for znak in veta:
if znak in "aeiou":
samohlasky = samohlasky + 1
if znak == " ":
mezery = mezery + 1
print("Počet znaků:", len(veta))
print("Samohlásek:", samohlasky)
print("Mezer:", mezery)
print("Slov:", mezery + 1) # slov je o jedno víc než mezer
Soubor: cviceni/02_bum_bac.py
Bum-Bác. Tuhle úlohu znáš z minula pro jedno číslo – teď ji necháme proběhnout cyklem. Vypiš čísla od 1 do 30, ale:
za dělitelné třemi i pěti zároveň vypiš "BumBác",
za dělitelné jen třemi vypiš "Bum",
za dělitelné jen pěti vypiš "Bác",
jinak vypiš samotné číslo.
for cislo in range(1, 31):
if cislo % 15 == 0: # dělitelné 3 i 5 = dělitelné 15, musí být první
print("BumBác")
elif cislo % 3 == 0:
print("Bum")
elif cislo % 5 == 0:
print("Bác")
else:
print(cislo)
Soubor: cviceni/03_statistika_cisel.py
Statistika čísel. Uživatel zadá, kolik čísel bude zadávat, a pak ta čísla postupně napíše. V jednom průchodu cyklem spočítej a vypiš jejich součet, průměr, největší a nejmenší číslo. Nepoužívej funkce sum, max ani min – spočítej vše sama cyklem.
pocet = int(input("Kolik čísel zadáš? "))
prvni = int(input("Zadej číslo: "))
soucet = prvni
nejvetsi = prvni # první číslo je zatím největší i nejmenší
nejmensi = prvni
for i in range(pocet - 1): # první už máme, zbývá o jedno míň
cislo = int(input("Zadej číslo: "))
soucet = soucet + cislo
if cislo > nejvetsi:
nejvetsi = cislo
if cislo < nejmensi:
nejmensi = cislo
print("Součet:", soucet)
print("Průměr:", soucet / pocet)
print("Největší:", nejvetsi)
print("Nejmenší:", nejmensi)
Soubor: cviceni/04_nasobilkova_tabulka.py
Násobilková tabulka. Pomocí vnořených cyklů vypiš tabulku 4x4, kde na řádku R a sloupci S je jejich součin:
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16
Jak pojmenuješ obě proměnné cyklu? Zamysli se, ať dávají smysl.
for radek in range(1, 5):
for sloupec in range(1, 5):
print(radek * sloupec, end=" ")
print() # po každém řádku skoč na nový řádek
Soubor: cviceni/05_hody_dvema_kostkami.py
Hody dvěma kostkami. Vnořenými cykly vypiš všechny možné hody dvěma kostkami (každá má čísla 1 až 6) a u každého i jejich součet. Každý řádek bude vypadat třeba takhle: 2 + 5 = 7
for kostka1 in range(1, 7):
for kostka2 in range(1, 7):
print(kostka1, "+", kostka2, "=", kostka1 + kostka2)
Zpět na téma: Procházení textu · Další: Bonusová cvičení: Procházení textu
Bonusy jsou pro rychlíky – když máš hotová cvičení a zbývá čas. Každý bonus má vlastní soubor ve složce lekce03-funkce-a-cyklus-for/03_prochazeni/cviceni_bonusy/. Řešení si rozklikni až po vlastním pokusu – tvoje řešení může vypadat jinak, a to je v pořádku.
Soubor: cviceni_bonusy/01_trojuhelnik_z_hvezdicek.py
Trojúhelník z hvězdiček. Uživatel zadá výšku a ty vypiš trojúhelník, kde první řádek má jednu hvězdičku, druhý dvě atd.:
*
**
***
vyska = int(input("Jak vysoký trojúhelník? "))
for radek in range(1, vyska + 1):
print("*" * radek) # "*" * 3 je "***"
Soubor: cviceni_bonusy/02_ramecek.py
Rámeček. Uživatel zadá velikost N. Vnořenými cykly nakresli čtverec N x N, kde okraj tvoří X a vnitřek je prázdný. Pro N=4: X X X X X X X X X X X X Zamysli se: na kterém řádku a sloupci se kreslí X a kdy mezera?
n = int(input("Jak velký rámeček? "))
for radek in range(n):
for sloupec in range(n):
if radek == 0 or radek == n - 1 or sloupec == 0 or sloupec == n - 1:
print("X", end=" ")
else:
print(" ", end=" ")
print()
Soubor: cviceni_bonusy/03_ciferny_soucet.py
Ciferný součet. Uživatel zadá číslo. Sečti jeho jednotlivé číslice a součet vypiš (třeba z 253 vyjde 2 + 5 + 3 = 10).
cislo = input("Zadej číslo: ") # necháme jako text, ať projdeme číslice
soucet = 0
for znak in cislo:
soucet = soucet + int(znak) # každou číslici převedeme na číslo
print("Ciferný součet:", soucet)
Soubor: cviceni_bonusy/04_teplotni_skok.py
Teplotní skok. Uživatel postupně zadá sedm denních teplot (klidně i záporných). Najdi a vypiš největší skok mezi dvěma sousedními dny – tedy největší rozdíl teplot ze dne na den (bez ohledu na to, jestli teplota stoupla, nebo klesla).
predchozi = int(input("Zadej teplotu: "))
nejvetsi_skok = 0
for den in range(6): # zbývá dalších šest dní
teplota = int(input("Zadej teplotu: "))
skok = abs(teplota - predchozi) # rozdíl proti včerejšku, bez ohledu na směr
if skok > nejvetsi_skok:
nejvetsi_skok = skok
predchozi = teplota # dnešek se stane včerejškem
print("Největší skok:", nejvetsi_skok)
Soubor: cviceni_bonusy/05_palindrom.py
Palindrom. Uživatel zadá slovo. Zjisti, jestli se čte stejně zepředu i zezadu (třeba "kajak" nebo "radar"). Zamysli se, jak si slovo poskládáš pozpátku a jak obě verze porovnáš.
slovo = input("Napiš slovo: ")
obracene = ""
for znak in slovo:
obracene = znak + obracene # každé písmeno dáme PŘED dosavadní výsledek
if slovo == obracene:
print("Je to palindrom.")
else:
print("Není to palindrom.")