Úlohy na procvičení

Funkce

Napište následující funkce. Zkuste doplnit i typové anotace parametrů a návratové hodnoty.

  • Napište funkci compare(a, b), která vrací 1 pro a > b, 0 pro a == b a -1 pro a < b.

  • Napište funkci is_even(number), která přijme celé číslo jako argument a vrací True, je-li číslo sudé, a False, je-li liché.

  • Nyní napište funkci is_odd(number), která vrací True, je-li číslo liché a False, je-li sudé. Využijte funkci is_even.

  • Napište funkci, která počítá ciferný součet čísla. Například ciferný součet čísla \(1234\) je \(10\) (protože \(1 + 2 + 3 + 4 = 10\)).

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

Účtenka

Řešte úlohu Účtenka v ReCodExu (středa, čtvrtek). Jejím cílem je vytvořit program, který načte seznam nakoupených položek a vypíše k nim přehlednou účtenku.

Nápověda: přesměrování vstupu ze souboru

Abyste vstup při každém spuštění nemuseli znovu opisovat nebo kopírovat, uložte si ho do textového souboru (např. priklad.txt) a spusťte program s přesměrováním vstupu. Ve vašem programu nic měnit nemusíte, dál bude používat input(). Jen se řádky místo z klávesnice budou postupně načítat ze souboru. Výstup programu se bude normálně vypisovat do terminálu.

Soubor priklad.txt uložte do stejné složky jako uctenka.py a příkaz spusťte v terminálu otevřeném v této složce. Přesný zápis příkazu se liší podle toho, jaký terminál používáte:

Windows – PowerShell (výchozí terminál ve Windows i ve VS Code):

Get-Content priklad.txt | python uctenka.py

Windows – příkazový řádek (z PowerShellu do něj můžete přejít zadáním příkazu cmd):

python uctenka.py < priklad.txt

Linux / macOS:

python3 uctenka.py < priklad.txt

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í. Hvězdičkou (⭐) je označena látka nad rámec předmětu Programování 1, kterou tedy teď nemusíte umět, ale někdy v budoucnu se vám může hodit.

  • 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)