Těchto pár úkolů slouží k procvičení práce se slovníky, které se následně pokusíš využít při programování známé skautské hry.
Napiš funkci, která pro argumentem zadané číslo n
vytvoří a vrátí slovník,
kde jako klíče budou čísla od jedné do n
a jako hodnoty k nim
jejich druhé mocniny. Například:
>>> mocniny(4)
{1: 1, 2: 4, 3: 9, 4: 16}
Napiš funkci, která vrátí sumu všech klíčů a sumu všech hodnot ve slovníku, který dostane jako argument. K vyzkoušení můžeš použít slovník z minulé úlohy. Například:
>>> slovnik = mocniny(4)
>>> soucet_klicu_a_hodnot(slovnik)
(10, 30)
Napiš funkci, která vypíše obsah slovníku (klíče a k nim náležící hodnoty) na jednotlivé řádky.
Funkci, která něco vypisuje, je vhodné
pojmenovat speciálně, zde třeba vypis_slovnik
, aby bylo jasné,
že jen vypisuje a nic nevrací. K vyzkoušení můžeš zase použít
slovník z minulé úlohy. Například:
>>> slovnik = mocniny(4)
>>> vypis_slovnik(slovník)
Klíč 1, hodnota 1
Klíč 2, hodnota 4
Klíč 3, hodnota 9
Klíč 4, hodnota 16
Napiš funkci, která jako argument dostane řetězec a vrátí slovník, ve kterém budou jako klíče jednotlivé znaky ze zadaného řetězce a jako hodnoty počty výskytů těchto znaků v řetězci. Například:
>>> pocet_znaku("hello world")
{'h': 1, 'e': 1, 'l': 3, 'o': 2, ' ': 1, 'w': 1, 'r': 1, 'd': 1}
Několik jednoduchých příkladů na spojování slovníků.
Vytvoř dva slovníky {'a': 1, 'b': 2}
a {'c': 3, 'd':4}
a sluč je dohromady.
Kolik bude mít výsledný slovník položek?
Vytvoř dva slovníky {'a': 1, 'b': 2}
a {'a': 3, 'd':4}
a sluč je dohromady.
Kolik bude mít výsledný slovník položek?
Co se stane pokud se pokusíš vypsat hodnotu klíče, který ve slovníku není?
Zkusit to můžeš na slovníku z předchozího úkolu a klíči 'c'
.
A teď už ke slíbené hře.
Úkolem je vytvořit známou skautskou hru „Kdo? S kým? Co dělali?“. Hra se hráče zeptá postupně na různé otázky, například „Kdo?“, „S kým?“, „Co dělali?“, „Kde?“, „Kdy?“, a nakonec „Proč?“, s tím, že mu umožní na jednu otázku odpovědět vícekrát a všechny odpovědi si uloží. Na závěr pak hra z každé sady odpovědí vybere náhodně jednu odpověď a z takto vybraných odpovědí složí větu, kterou vypíše uživateli. Seznam otázek by mělo být možné změnit v kódu na jednom místě bez zásahu do logiky programu.
Výzva U skautů ještě zůstaneme. Napiš program, který přeloží zadaný řetězec do morseovy abecedy, tečku nahraď slovem STOP, ostatní interpunkci můžeš ignorovat, slova oddělujte svislítkem '|'. Morseovu abecedu připravenou pro python najdeš tady.