Vlastní funkce  13. dubna 2023

Materiály

Nejste účastníkem kurzu
Pro zápis do kurzu se nejprve přihlašte a následně použijte tlačítko v přehledu kurzu.

Domácí projekty

Na začátek trocha teoretického opakování.

0.

Co dělá funkce print?

1.

Co vrací funkce print?

Trocha experimentování. Zadání si prosím pořádně přečti.

2.

Co se stane, když tělo nějaké funkce necháš úplně prázdné? Zkus vysvětlit, proč. (Tělo funkce je odsazený blok za dvojtečkou)

3.

Co se stane, když necháš úplně prázdné tělo cyklu? Zkus vysvětlit, proč.

Umíš napsat funkci (nebo proceduru)?

Pozor na slovíčka jako „vrátit“ a „vypsat“, která říkají, co máš dělat.

4.

Napiš funkci, která jako argument bere příjmení uživatelky/uživatele a zkusí podle něj uhodnout její/jeho pohlaví. To vrátí jako řetězec.

Funkci v programu několikrát zavolej (s různými příjmeními – ty můžeš zadat přímo do kódu při volání funkcí). Výsledky vypiš.

(Pohlaví není možné určit přesně – stačí zvládnout ta nejčastější česká příjmení.)

Program, který tohle dělá, už máš – úkol spočívá v tom, že z něj správný kousek „zabalíš“ do funkce.

5.

Vytvoř funkci pocet_vterin, která bude mít dva argumenty: čas v minutách a čas ve vteřinách. A bude vracet celkový počet vteřin.

6.

Vytvoř funkci, která spočítá Body Mass Index pro kočky. Vstupem (parametry) funkce bude obvod hrudníku (cm) a délka zadní nohy od kolena ke kotníku (cm). Funkce vrátí číslo feline body mass index (fBMI).

Postup výpočtu fBMI: 1. Vydělit obvod hrudníku 0.7062 a odečíst délku nohy. 2. Vydělit výsledek 0.9156. 3. Od výsledku bodu 2 odečíst délku nohy.

7.

Napiš funkci, která bude mít jako parametr jedno číslo a vrátí "Bum", je-li toto číslo liché, a "Bác", je-li toto číslo sudé.

8.

Napiš funkci, která bude mít jako parametr jedno číslo (n) a vypíše n řádek. Na prvním řádku bude "Bum", na druhém "Bác", na třetím "Bum", atd. Využij funkci z předchozího úkolu.

Např.

>>> vypis_bum_bac(5) 
Bum
Bác
Bum
Bác
Bum
9.

Napiš proceduru, která vykreslí domeček dané velikosti. Velikost se zadá jako argument, např:

vykresli_domecek(30)
vykresli_domecek(40)
vykresli_domecek(80)

Proceduru v programu několikrát zavolej (s různými velikostmi).

domečky

10.

Máš-li ráda geometrii, můžeš zkusit dávat domečkové proceduře dva argumenty: šířku a výšku. Je potřeba si vzpomenout na Pythagorovu větu a na goniometrické funkce. Konkrétně funkci arkus tangens* from math import atan.

Pozor, funkce atan vrací výsledek v radiánech; je potřeba ho převést na stupně (from math import degrees).

domečky

* t.j. jestli nemáš ráda geometrii, tak tenhle úkol přeskoč

Procvičení programování. Často je jednoduché něco napsat, ale dotažení do konce může být časově náročné. Tyto úkoly jsou nepovinné. Nemáš-li čas, přeskoč je a jen se zamysli, jak bys projekt vyřešila.

11.

Změň funkci ano_nebo_ne tak, aby se místo ano se dalo použít i a, místo ne i n a aby se nebral ohled na velikost písmen a mezery před/za odpovědí.

Odpovědím jako možná nebo no tak určitě by počítač dál neměl rozumět.

12.

Další vylepšení hry sibenice:

  • Použij funkci zamen (místo toho, aby byl příslušný kód přímo v hlavním programu).
  • Po vypsání počtu neúspěšných pokusů vypiš obrázek. Funkci, která vrátí obrázek podle počtu pokusů, si můžeš zkopírovat z Gistu
  • Zabal hru do funkce a po skončení dej hráči možnost hru opakovat

Obrázek na konec.

13.

Tento úkol je nepovinný. Procvičuje rekurzi; koukni před ním na příslušné materiály.

Řekni želvě, aby nakreslila tento stromeček. (Instrukce můžeš řádek po řádku přeložit do Pythonu.)

Rekurzivní želví stromek

  • Stromeček dané délky a úhlu se kreslí takto:

    • (Malý stromeček je jen jedna větvička.) Je-li délka menší než 20:
      • Pohni se dopředu o danou délku.
      • Otoč se zpátky, o 180°
      • Pohni se dopředu o délku (aby želva byla na stejném místě jako na začátku)
      • Otoč se zpátky, o 180° (aby se želva dívala stejným směrem jako na začátku)
    • Jinak (je stromeček rozvětvený):
      • Pohni se dopředu o polovinu délky (nakreslíš tak kmen)
      • Otoč se doprava o úhel
      • Nakresli stromeček s poloviční délkou (delka/2) a dvoutřetinovým úhlem (uhel*2/3)
      • Otoč se doleva o úhel
      • Nakresli stromeček s poloviční délkou a dvoutřetinovým úhlem
      • Otoč se doleva o úhel
      • Nakresli stromeček s poloviční délkou a dvoutřetinovým úhlem
      • Otoč se doprava o úhel
      • Otoč se zpátky, o 180°
      • Pohni se dopředu o polovinu délky (aby želva byla na stejném místě jako na začátku)
      • Otoč se zpátky, o 180° (aby se želva dívala stejným směrem jako na začátku)
  • Otoč želvu o 90° doleva (aby se dívala nahoru)

  • Nakresli stromeček o délce 200 a úhlu 60.