Úlohy na procvičení

Refaktoring

Soubor refaktoring.py obsahuje kód funkce, která provádí několik operací. Vaším úkolem je refaktorovat (upravit) tento kód tak, aby byl lépe čitelný a organizovaný.

  • Vhodně pojmenujte proměnné.
  • Rozdělte program na funkce, abyste dodrželi princip jedné odpovědnosti (funkce by měla dělat jen jednu věc).
  • Doplňte type hints.
  • Doplňte vhodný dokumentační komentář.

Dále zobecněte kód tak, aby pracoval s libovolnou velikostí vstupního argumentu

Funkce pro textové řetězce

  1. Napište funkci contains, která pro zadaný text text a znak char zjistí, jestli text obsahuje znak char.
    Ručně napište cyklus, který bude procházet přes znaky textu, nepoužívejte operátor in (pokud ho znáte).

    >>> contains("banana", "n")
    True
    >>> contains("banana", "z")
    False
  2. Napište funkci count, která pro zadaný text text a znak char spočítá, kolikrát se znak char vyskytuje v textu.
    Nepoužívejte metodu str.count ze standardní knihovny.

    >>> count("banana", "n")
    2
  3. Napište funkci find, která pro zadaný text text a znak char zjistí, na jaké pozici se znak char poprvé vyskytuje v textu. Pokud se char v textu nevyskytuje, vraťte -1.
    Nepoužívejte metodu str.find ani str.index ze standardní knihovny.

    >>> find("banana", "b")
    0
    >>> find("banana", "n")
    2
    >>> find("banana", "z")
    -1

Cvičení na seznamy

Je dána posloupnost čísel…

  1. zjistěte, jestli jsou všechna navzájem různá.
  2. vypište všechna opakující se čísla (ale každé jen jednou).
  3. najděte dvojici s co nejmenším rozdílem.

Umíte předchozí úkoly vyřešit efektivněji, pokud víte, ze všechna zadaná čísla leží od \(1\) do \(100\)?

Bludiště

V souboru maze_broken.py je kód jednoduché hry, ve které se hráč pohybuje bludištěm. Kód ale obsahuje celou řadu chyb. Najděte je a opravte.

Učební výstupy

Učební výstupy podávají zhuštěný souhrn základních konceptů a dovedností, které byste měli umět vysvětlit a/nebo použít po každém cvičení.

  • chápat funkci jako transformaci dat (vstupy -> výstupy)
  • umět definovat funkci a její argumenty, umět zavolat funkci s konkrétními hodnotami argumentů
  • umět zdokumentovat funkci (co dělá, význam argumentů, ideálně i typy argumentů a návratové hodnoty), zapsat dokumentaci funkce jako dokumentační komentář (docstring)
  • chápat, že funkce může mít vedlejší efekty (např. výpis na obrazovku)
  • umět spustit program v ladícím režimu (debug) a krokovat ho (nastavit breakpoint)