Tato lekce obsahuje různé úkoly, které se nám nikde jinde nevešly. Můžeš je řešit v náhodném pořadí a jsou všechny nepovinné. Některé z nich ti mohou zabrat několik hodin. Na všechny tvoje dotazy rádi odpovíme na Slacku nebo si domluv online konzultaci s koučem.
Jedna klasická programovací úloha, která nejspíš pořádně potrápí tvé logické myšlení.
Napiš funkci, která převede římské číslice na arabské (int
).
Napiš funkci, která převede arabské číslice na římské.
Dadaistický koutek: procvičení práce se seznamy, řetězci a soubory.
Vyber si básničku, která má aspoň tři sloky po aspoň třech verších. Ulož ji do souboru basnicka.txt. Básničku ulož tak, aby mezi každou slokou byl volný řádek. Můžeš použít třeba kousek Máje od K. H. Máchy nebo některou baladu z Kytice od K. J. Erbena.
Napiš program, který vypíše básničku ze souboru basnicka.txt, ale obrátí
pořadí veršů (t.j. jako první vypíše poslední řádek atd.). Nápověda: Každý
seznam má metodu reverse
, která ho „obrátí”.
Napiš program, který obrátí pořadí slov v jednotlivých verších
Obrať pořadí slok (ty by měly být oddělené jedním prázdným řádkem).
Vypiš slova básně v náhodném pořadí.
Bonusový projekt: Snaž se přitom co nejlépe zachovat strukturu básně (sloky, verše, interpunkci, velká písmena, ...
Několik matematických úkolů:
Suma čísel dělitelných trojkou nebo pětkou¶
Vezmeme li čísla menší než 10 dělitelná beze zbytku trojkou nebo pětkou, dostaneme 3, 5, 6 a 9. Jejich součet je 23. Jaký je součet čísel dělitelných beze zbytku trojkou nebo pětkou v intervalu od 0 do 100?
(Výsledek: 2318)
Prvočísla
Na seznamu prvočísel (2, 3, 5, 7, 11, a 13) je vidět, že šesté prvočíslo je 13. Jaké je sté prvočíslo? A které je na pozici s číslem deset tisíc?
(Výsledek: 104729)
Dělitelnost čísel
2520 je nejmenší číslo, které je beze zbytku dělitelné všemi čísly od 1 po 10. Najděte nejmenší kladné celé číslo, které je beze zbytku dělitelné všemi císly od 1 do 20.
(Výsledek: 232792560)
Prvočíselná dvojčata
Prvočíselné dvojče je taková dvojice čísel, kde obě čísla jsou prvočísla a jedno je o dvě větší než to první. Nejmenší prvočíselné dvojče je 3 a 5. Najdi deset prvních prvočíselných dvojčat!
(Výsledek: 3-5, 5-7, 11-13, 17-19, 29-31, 41-43, 59-61, 71-73, 101-103, 107-109)
Želví kreslení.
Nakresli želvu želvou. Výsledek může vypadat např. takto.
V tomto úkolu bude potřeba trochu hledat v dokumentaci. Cílem je nakreslit želvou obrázek na pozadí nějaké fotky.
Jak na to?
Tento úkol vznikl jako reakce na dotaz jedné účastnice předchozího kurzu Pythonu od PyLadies. Otázka byla: "Šlo by to nějak udělat, že se okno s želvou zavře po stisknutí nějaké klávesy? Třeba K?".
V tomto úkolu tedy odevzdej libovolný obrázek nakreslený želvou (můžeš využít nějaký tvůj předchozí projekt) a zároveň nastav, aby se okno s výsledným obrázkem zavřelo po stisknutí klávesy "k".
Dokumentace bude tvým dobrým kamarádem.
Modul turtle
je celkem zajímavý. Např. forward
je možno použít dvěma následujícími způsoby.
# Způsob č. 1
from turtle import forward, exitonclick
forward(50)
exitonclick()
nebo
# Způsob č. 2
from turtle import Turtle, exitonclick
zelva = Turtle()
zelva.forward(50)
exitonclick()
V prvním případě je forward
funkcí, ale v druhém případě je forward
metodou třídy.
Zadání zní: Vytvořte vlastní třídu, která buď dělá něco, co standardní želva neumí, nebo něco, co želva umí, ale pod jiným názvem. Kreativitě se (jako vždy) meze nekladou.
Další úkol se týká kontroly vstupu od uživatele.
Jak to udělat, aby šlo desetinné číslo zadat i s desetinnou čárkou? Cílem je napsat program, který se zeptá uživatele na číslo a vrátí číslo (datový typ int
nebo float
) a je jedno, zda uživatel použije desetinnou tečku nebo desetinnou čárku. Fungovat tedy musí obě varianty.
Tento úkol navazuje na to, co jsme si ukazovali na lekci o třídách.
Na lekci o třídách jsme si ukázali, jak vytvořít třídu pro koťátka. V rámci tohoto úkolu vytvořte třídu pro kočku, která:
zamnoukej
je_ziva
uber_zivot
snez
, která bere jako argument konkrétní jídlo (řetězec), pokud je toto jídlo ryba
, pak se kočce obnoví 1 život (pokud tedy už není mrtvá nebo nemá maximální počet životů)V lekci o seznamech jste v úkolech tvořili hru "Had". Při pohybu hada v herním poli se na terminálu vždy vypsalo nové herní pole s novým stavem hry.
Zkuste zajistit, jak to udělat, aby na terminálu byl vidět jen poslední stav. Tedy herní pole se nebude vypisovat znovu a znovu s novým stavem, ale bude se v terminálu přepisovat. Vizuálně to pak bude vypadat, jako by se herní pole měnilo. Na internetu zkus najít toto téma pod heslem "How to Clear Screen in Python?".
Přestupný rok.
Napiš program, který na vstupu dostane rok a na terminál vypíše informaci, zda se jedná o přestupný rok. Nejdříve však zkus najít na internetu, podle jakých pravidel se určuje, zda rok bude nebo nebude přestupný.