12: (Ne)Standardní knihovny

Úkoly v hodině

  • Simulujte 1000 hodů kostkou. Spočítejte výskyty každého čísla. Kolik jich je nejméně a kolik nejvíce? řešení
  • Generujte náhodně body ve čtverci [-1,1] × [-1,1]. Počítejte, kolik z nich padlo do jednotkového kruhu, a tím aproximujte π. řešení
  • Generujte náhodně permutace slov věty “Kobyla má malý bok”. řešení
  • Pomocí Malé Fermatovy věty testujte, zda je nějaké velké číslo pravděpodobně prvočíslem. Hodí se tříparametrová funkce pow(a, b, c), která efektivně spočítá a^b mod c. řešení
  • Simulujte náhodnou procházku po celých číslech od 0 do N. Začínáme v 0, v každém kroku náhodně buď zvýšíme nebo snížíme o 1 (v 0 jen zvyšujeme). Po kolika krocích se dostaneme do N? řešení

11: Soubory a výjimky

Úkoly v hodině

  • Vánoční úloha v recodexu (5 bodů, do konce hodiny, první vyhrává vánoční pivo)
  • řešení

nebo:

  • Spočítejte, kolik je v souboru řádků, slov a viditelných znaků (tedy bez mezer a konců řádků)
  • Zkopíruje soubor do jiného souboru, aby řádky šly v opačném pořadí
  • Najděte na každém řádku všechna čísla (oddělená mezerami) a vypíše jejich součet; slova, která nejsou čísly, ignoruje.
  • řešení, testovací soubor

10: Objekty

Programy z přednášky

Úkoly v hodině

  • Naučte každé zvíře slyšet navíc na jméno potvůrka.
  • Doplňte atribut pozice a zařiďte, aby zvíře slyšelo na jméno jenom tehdy, když pozice je doma.
  • Vytvořte odvozenou třídu Pes, jehož metoda ozvi_se na každé druhé zavolání zaštěká a jinak zavrčí.

09: Lambda funkce

Úkoly v hodině

  • Napište funkci compose(f,g), která pro dvě funkce f a g (obě s jedním parametrem) vrátí funkci, jež je jejich složením (f(g(x))).
  • Napište funkci red(s,f), která dostane seznam s a funkci f(x,y) a spočítá f(f(f(s[0], s[1]), s[3]), s[4]).
  • Zapište pomocí redukce součet prvků seznamu.
  • Zapište pomocí redukce nalezení maxima seznamu.
  • Zapište pomocí redukce nalezení prvního nenulového prvku (není-li, vraťte 0).
  • Co redukce udělá pro operátor -?
  • Co udělá red(s, lambda x, y: (x,y))?

08: Generátory

Programy z přednášky

Úkoly v hodině

  • Napište generátor mujrange, který bude pracovat stejně jako range (s jedním parametrem)
  • Napište generátor, který dostane dva seznamy a bude generovat jejich kartézský součin.
  • Spočítejte frekvence všech k-gramů (k-tic znaků) v textu. K-gramy vypište uspořádaně podle frekvence.
  • řešení

07: Dictionaries / Slovníky

Úkoly v hodině

  • vytvoří tabulku násobilky (a×b pro všechna a, b od 1 do daného čísla)
  • zjistí průnik dvou (neuspořádaných) seznamů
  • vybere z textu slova, která jsou palindromická (např. kajak)
  • spočítá skalární součin dvou vektorů
  • seřadí slova na řádku podle jejich délky (hint: (1) slova převést na dvojice (délka, slovo), (2) setřídit, (3) vypsat slova)
  • řešení

06: Řezy

Úkoly v hodině

  • otočte řetězec (datel → letad)
  • otočte číslo v desítkové soustavě (1024 → 4201)
  • kolik různých slov v řetězci
  • vyhodnoťte výraz se sčítáním (12+34+1 → 47)
  • řešení všech úkolů

05: Třídění a vyhledávání

Programy z přednášky

Úkoly v hodině

04: Funkce

Úkoly v hodině

03: Seznamy

Programy

02: Podmínky a cykly

Programy

Úkoly

01: Úvod do Pythonu a programování

Programy

Úkoly

  • Založte si účet v ReCodExu, připojte se do skupiny našeho cvičení a vyřešte si ukázkovou úlohu.