Lekce 11
Úlohy
Přestupný rok (3b)
- Napište funkci, která dostane rok a vrátí
True, pokud je rok přestupný.
- Program nemusí číst žádný vstup, stačí opravdu jen implementovat tuto funkci.
- Nastudujte si přesná pravidla.
- Nepoužívejte knihovny.
Pascalův trojúhelník (5b)
- Napište program, který vypíše Pascalův trojúhelník.
- Program bude vyžadovat jeden argument, který určí počet řádků.
- Očekávaný výstup pro
python pascal.py 6 je v souboru pascal-exp.txt.
- Těžší verze (+3b): Trojúhelník bude zarovnaný na střed, viz
pascal-aligned-exp.txt.
- Detaily zarovnání se ve vašem řešení mohou drobně lišit.
Pí (7b)
- Napište program, který přibližně určí číslo π.
- Použijte následující metodu:
- Uvažujme čtverec a jemu vepsaný kruh.
- Budeme náhodně vybírat body ze čtverce a zjišťovat, zda leží v kruhu.
- Náhodný bod lze vybrat tak, že si necháme vygenerovat jeho souřadnice
x, y jako dvě náhodná čísla z vhodného intervalu.
- Jestli bod leží v kruhu lze zjistit tak, že pomocí Pythagorovy věty spočítáme vzdálenost od středu kruhu a porovnáme ji s poloměrem kruhu.
- Musíte rozmyslet, jaký zvolit interval a poloměr kruhu.
- Poměr počtu bodů v kruhu k celkovému počtu bodů by měl být přibližně stejný jako poměr jejich obsahů, tedy π/4.
- Celkem vygenerujte 1000000 bodů. Při většině pokusů byste měli dostat číslo od
3.139 do 3.144.
Hledání v souborech (8b)
- Jako argument programu dostanete textový řetězec neboli jehlu (hledáme jehlu v kupce sena).
- Napište program, který projde všechny soubory v aktuálním adresáři a pokusí se v nich jehlu vyhledat.
- Zjistěte, jak pracovat s adresáři.
- Pokud soubor jehlu obsahuje, program vypíše jméno tohoto souboru (a pokračuje dalším souborem).
- Jako volitelný druhý argument může uživatel předat název adresáře, který se má prohledat.
- Očekávaný výstup pro
python search.py "0 1" data/ je v souboru search-exp.txt.
- Těžší verze (+3b): Pokud program dostane přepínač
-r, prohledá rekurzivně i všechny podadresáře.
- Přepínač může být umístěn na libovolné pozici v argumentech, například
python search.py text -r dir.
Sloupcový graf (10b)
- Na standardním vstupu dostanete několik hodnot, na každém řádku jednu.
- Hodnoty čtěte do té doby, než přijde konec vstupu.
- Viz sekce Konec vstupu z dnešní lekce.
- Hodnoty vykreslete pomocí sloupcového grafu napsaném v SVG.
- Hodnota určuje výšku sloupce.
- Výsledné SVG vypište na standardní výstup.
- Očekáváme, že uživatel přesměruje výstup do souboru.
- V adresáři s daty najdete očekávaný výstup
chart-exp.svg pro hodnoty z chart-in.txt.
- Pochopit formát není příliš složité.
- Čísla
140 a 120 na začátku určují šířku a výšku celého obrázku.
- Každý sloupec má hodnoty
x a y udávající souřadnice jeho levého dolního rohu (osa y roste dolů) a poté hodnoty width a height určující jeho rozměry.
- SVG soubor si můžete zobrazit ve webovém prohlížeči.
Kalendář (10b)
- Napište program, který vytiskne list kalendáře pro daný měsíc.
- Program bude ovládán argumenty:
- bez argumentů vypíše aktuální měsíc,
- s jedním argumentem vypíše měsíc současného roku,
- se 2 argumenty pak kalendář s daným měsícem a rokem.
- Pro zjištění aktuálního data a dalších potřebných informací použijte například knihovnu
datetime.
- Očekávaný výstup pro
python calendar.py 5 2021 je v souboru calendar-exp.txt.
- EDIT: Prosím, nepoužívejte knihovnu
calendar.