Skip to main content

2.3.1 Cvičné úlohy pre MicroPython

2.3.1 príklady na precvičenie.webp

Jednoduché úlohy s premennými a textami

Úloha 1: Žonglérska matematika don Bosca

Kontext: Don Bosco chce v oratóriu ohúriť chlapcov žonglovaním. Má v košíku určitý počet loptičiek. Potrebuje však vedieť, či mu nejaké zostanú, ak ich spravodlivo rozdelí medzi svojich pomocníkov.

Zadanie:

  1. Vytvor konštanty pre počet loptičiek (napr. 23) a pre počet chlapcov (napr. 5).

  2. Vypočítaj a vypíš, koľko loptičiek dostane každý chlapec.

  3. Vypočítaj a vypíš, koľko loptičiek zostane don Boscovi.

  4. Pomocou mocniny vypočítaj, koľko loptičiek by mal don Bosco, keby mal „zázračný košík“, ktorý počet loptičiek umocní na druhú.

Strážny anjel (riešenie)
lopticky = const(23)
chlapci = const(5)

na_jedneho = lopticky // chlapci
zostalo = lopticky % chlapci
zazrak = lopticky ** 2

print(f"Každý chlapec dostane {na_jedneho} loptičiek.")
print(f"Don Boscovi zostalo v košíku {zostalo} loptičiek.")
print(f"Keby sa stal zázrak, mal by až {zazrak} loptičiek!")

Úloha 2: Apoštol dňa

Kontext: V saleziánskom stredisku chceme každé ráno vybrať jedného apoštola ako patróna dňa. Aby to bolo spravodlivé, necháme to na algoritmus.

Zadanie:

  1. Vytvor zoznam apoštolov, ktorý obsahuje mená: Peter, Pavol, Jakub, Ján a Ondrej.

  2. Náhodne vyber jedného apoštola.

  3. Vypíš správu v tvare: „Dnešným patrónom je: MENO“, pričom meno musí byť veľkými písmenami.

  4. Zisti a vypíš dĺžku mena vybraného apoštola.

Strážny anjel (riešenie)
from random import choice

# mená bez diakritiky kvôli obmedzeniu MicroPythonu
apostoli = ["Peter", "Pavol", "Jakub", "Jan", "Ondrej"]
vybrany = choice(apostoli)
print("Dnešným patrónom je:", vybrany.upper())

dlzka = len(vybrany)
if dlzka < 5: slovo = "písmená"
else: slovo = "písmen"
print(f"Jeho meno má {dlzka} {slovo}.")

Úloha 3: Trpezlivosť sv. Františka Saleského

Kontext: Svätý František Saleský (patrón saleziánov) bol známy svojou miernosťou. Povedal: „Jedna kvapka medu pritiahne viac múch než celý sud octu.“ Skúsme si jeho miernosť nacvičiť krátkym meditačným časovačom.

Zadanie:

  1. Program vypíše: „Miernosť je sila. Nádych...“
  2. Program počká presne 2,5 sekundy.
  3. Program vypíše: „...a výdych. Buďte dobrí ako don Bosco.“
  4. Zmeraj a vypíš, koľko milisekúnd reálne ubehlo medzi nádychom a výdychom.
Strážny anjel (riešenie)
from time import sleep, ticks_ms, ticks_diff

print("Miernosť je sila. Nádych...")
start = ticks_ms()
sleep(2.5)
print("...a výdych. Buďte dobrí ako don Bosco.")
koniec = ticks_ms()

trvanie = ticks_diff(koniec, start)
print(f"\nTvoja meditácia trvala presne {trvanie} ms.")

Úloha 4: Noemov popletený zoznam

Kontext: Noe si zaznamenal zoznam zvierat na archu, ale v tom zhone pred potopou to napísal dosť neporiadne. Potrebujeme ten text vyčistiť.

Zadanie:

  1. Máš záznam s textom „ hOLub, HavrAn, tiGer, srnkA “.
  2. Očisti text o biele znaky (medzery) na začiatku a konci.
  3. Preveď celý text na malé písmená.
  4. Nahraď všetky výskyty slova srnka slovom antilopa.
  5. Rozdeľ tento text na zoznam jednotlivých zvierat (podľa čiarky) a vypíš ho.
Strážny anjel (riešenie)
zaznam = "  hOLub, HavrAn, tiGer, srnkA  "

# 1. odstránenie medzier na krajoch
cisty = zaznam.strip()

# 2. prevod na malé písmená (funguje len pre ASCII bez diakritiky)
maly = cisty.lower()

# 3. nahradenie zvieraťa
opraveny = maly.replace("srnka", "antilopa")

# 4. rozdelenie na zoznam (list)
zoznam_zvierat = opraveny.split(", ")

print("Noe, tu je tvoj vyčistený zoznam:", zoznam_zvierat)

print("A viem ho vytvoriť aj na jeden krok:", end = " ")
print(zaznam.strip().lower().replace("zebra", "antilopa").split(", "))

Úloha 5: Unikátny kód oratória

Kontext: Chceme, aby sa každý mikrokontrolér v našom stredisku DOMKA vedel identifikovať unikátnym menom. Aby sme mali istotu, že každý bude mať iné meno, použijeme posledných 6 znakov z ID zariadenia.

Zadanie:

  1. Získaj unikátne ID zariadenia.

  2. Preveď toto binárne ID na čitateľný text (reťazec) v šestnástkovej sústave.

  3. Z tohto textu získaj posledných 6 znakov.

  4. Vytvor výsledné meno tak, že pred tieto znaky pridáš predponu „DOMKA-“.

  5. Vypíš výsledok v tvare: „Moje meno je: DOMKA-1a2b3c“

Strážny anjel (riešenie)
from machine import unique_id
from binascii import hexlify

# 1. získanie surového ID (bytes)
raw_id = unique_id()

# 2. prevod na hexadecimálny reťazec (string)
hex_id = hexlify(raw_id).decode()

# 3. získanie posledných 6 znakov a pridanie predpony DOMKA
meno_zariadenia = "DOMKA-" + hex_id[-6:]

print("Moje meno je:", meno_zariadenia)
print("A jedným ťahom to je:", "DOMKA-" + hexlify(unique_id()).decode()[-6:])

Úlohy s podmienkami, cyklami a poľom údajov

Úloha 6: Spravodlivý hospodár

Kontext: V záhrade sa urodilo určité množstvo fíg. Don Bosco ich chce rozdeliť medzi chlapcov tak, aby každý dostal aspoň jednu. Ak je fíg málo, don Bosco sa svojej porcie vzdá.

Zadanie:

  1. Zo vstupu načítaj počet fíg a počet chlapcov.
  2. Ak je fíg viac ako chlapcov, vypíš: „Dnes máme hojnosť, vyjde každému!“
  3. Ak je fíg presne toľko ako chlapcov, vypíš: „Ujde sa každému chlapcovi, ale don Bosco bude dnes o hlade.“
  4. Ak je fíg menej ako chlapcov, vypíš: „Budeme sa musieť podeliť, nie je dosť pre všetkých.“
Strážny anjel (riešenie)
pocet_fig = input("počet fíg: ")
pocet_chlapcov = input("počet chlapcov: ")

if pocet_fig > pocet_chlapcov:
    print("Dnes máme hojnosť, vyjde každému!")
elif pocet_fig == pocet_chlapcov:
    print("Ujde sa každému chlapcovi, ale don Bosco bude dnes o hlade.")
else:
    print("Budeme sa musieť podeliť, nie je dosť pre všetkých.")

Úloha 7: Jozefova dielňa

Kontext: Svätý Jozef pripravuje náradie v dielni. Má zoznam vecí, ktoré potrebuje na opravu stola, ale musí skontrolovať, či mu niečo nechýba.

Zadanie:

  1. Vytvor zoznam náradia, ktorý obsahuje: kladivo, píla, dláto, meter.
  2. Pomocou cyklu prejdi celý zoznam a vypíš každé náradie v tvare: „Jozef berie do ruky: náradie
  3. Ak narazíš na položku „píla“, vypíš k nej extra správu: „(Pozor, je ostrá!)“
Strážny anjel (riešenie)
naradie = ("kladivo", "píla", "dláto", "meter")

for n in naradie:
    print("Jozef berie do ruky:", n)
    if n == "píla":
        print("(Pozor, je ostrá!)")

Úloha 8: Cesta do Betlehema

Kontext: Mária a Jozef putujú do Betlehema. Cesta je dlhá približne 150 kilometrov. Každým dňom prejdú približne 20 km cesty, až kým nedorazia do cieľa.

Zadanie:

  1. Do premennej ulož celé číslo 150 ± 5 (náhodne).

  2. Pomocou cyklu simuluj cestu: Kým ešte zostáva prejsť nejakú vzdialenosť, vypíš deň a koľko kilometrov zostáva.

  3. Pozor na gramatiku:

    • Ak zostávajú 2, 3 alebo 4 km, vypíš: „V {?}. deň zostávajú {?} km...“

    • Pre ostatné počty vypíš: „V {?}. deň zostáva {?} km...“

  4. Následne od tejto vzdialenosti odpočítaj 20 ± 5 km.

  5. Keď prídu do cieľa, vypíš: „Mária a Jozef dorazili do Betlehema. Narodil sa Ježiško!“

Strážny anjel (riešenie)
from random import randint
vzdialenost = 150 + randint(-5, 5)

den = 1
while vzdialenost > 0:
    if 2 <= vzdialenost <= 4: slovo = "zostávajú"
    else: slovo = "zostáva"    
    print(f"V {den}. deň {slovo} {vzdialenost} km...")
    vzdialenost -= 20 + randint(-5, 5)
    den += 1

print("Mária a Jozef dorazili do Betlehema. Narodil sa Ježiško!")

Úloha 9: Skúška v rajskej záhrade

Kontext: Adam sa prechádza po rajskej záhrade a náhodne ochutnáva ovocie. Počas vychádzky by stihol ochutnať nanajvýš z 5 stromov. Ak počas týchto pokusov okúsi ovocie zo zakázaného stromu, bude vyhnaný. Ak vydrží všetky pokusy bez hriechu, obstál v skúške.

Zadanie:

  1. Vygeneruj náhodný počet ochutnávok (od 1 do 5).
  2. Vytvor zoznam stromov s rôznym ovocím, nezabudni doň zaradiť aj „strom poznania“.
  3. Podľa počtu ochutnávok opakuj náhodný výber stromu zo zoznamu.
    • Ak je to strom poznania, vypíš varovanie: „Beda! Adam zahryzol do zakázaného ovocia!“ a okamžite ukonči program.
    • Inak vypíš: „Adam ochutnáva ovocie zo stromu {názov stromu}.“
  4. Ak skúšku zvládol, vypíš: „Skúška skončila. Adam odolal a zostáva v raji.“
Strážny anjel (riešenie)
from random import randint, choice
from time import sleep

pocet = randint(1, 5)
stromy = ("figovník", "olivovník", "jabloň", "strom poznania", "hruška", "granátovník")

print(f"--- Adam skúša šťastie {pocet}-krát ---")
for i in range(pocet):
    sleep(1)
    print(f"{i+1}. ochutnávka:", end = " ")
    vybrany_strom = choice(stromy)    
    if vybrany_strom == "strom poznania":
        print("Beda! Adam zahryzol do zakázaného ovocia!")
        break    
    print(f"Adam ochutnáva ovocie zo stromu {vybrany_strom}.")
else:
    # táto časť sa vykoná LEN vtedy, ak cyklus prebehol celý a nenarazil na break
    print("Skúška skončila. Adam odolal a zostáva v raji.")

Úloha 10: Zázrak rozmnoženia

Kontext: Ježiš má na začiatku 5 chlebov. Simuluj zázrak, pri ktorom sa počet chlebov 3 až 7-krát po sebe zdvojnásobí.

Zadanie:

  1. Na úvod a po každom zdvojnásobení vypíš aktuálny počet chlebov.
  2. Po skončení celého procesu vypíš finálnu vetu o nasýtení zástupov s celkovým počtom chlebov.
Strážny anjel (riešenie)
from random import randint
from time import sleep

chleby = 5
print("Aktuálny počet chlebov:", chleby, end = "")
for _ in range(randint(3, 7)):
    sleep(0.5)
    print("\b" * len(str(chleby)), end = "")
    chleby *= 2
    print(chleby, end = "")
print(f"\nJežiš nasýtil zástupy, má až {chleby} chlebov!")

Úloha 11: Podiel na odmene

Kontext: V saleziánskom stredisku zbierajú chlapci body za dobré skutky. Na konci týždňa sa body sčítajú.

Zadanie:

  1. Máš zoznam bodov, ktoré získali piati chlapci: 12, 0, 8, 25, 3.
  2. Prejdi tento zoznam a pre každú hodnotu rozhodni:
    • Ak má chlapec viac ako 10 bodov, vypíš: „{?} bodov: Skvelá práca, máš nárok na sladkú odmenu!“
    • Ak má chlapec aspoň 1 bod (ale nie viac ako 10), vypíš: „{?} bodov: Pekne si sa snažil, nabudúce to bude ešte lepšie.“ - pozor však na gramatiku!
    • Ak nemá chlapec žiadny bod, vypíš: „0 bodov: Nevadí, don Bosco ti verí, že zajtra začneš nanovo!“
  3. Na úplný záver vypíš celkový súčet všetkých bodov v stredisku.
Strážny anjel (riešenie)
body_chlapcov = (12, 0, 8, 1, 3)
celkovo = 0
for b in body_chlapcov:
    celkovo += b
    if b > 10:
        print(b, "bodov: Skvelá práca, máš nárok na sladkú odmenu!")
    elif b >= 1:
        if b == 1: slovo = "bod"
        elif b <= 4: slovo = "body"
        else: slovo = "bodov"
        print(f"{b} {slovo}: Pekne si sa snažil, nabudúce to bude ešte lepšie.")
    else:
        print("0 bodov: Nevadí, don Bosco ti verí, že zajtra začneš nanovo!")
print("Celkový počet bodov v stredisku:", celkovo)

Úloha 12: Špajza v Káne Galilejskej

Kontext: Svadba v Káne beží v plnom prúde a správca hodov musí sledovať, koľko čoho zostáva v špajzi, aby nedošlo k trapasu.

Zadanie:

  • Vytvorte databázu údajov (slovník), v ktorom budú názvy položiek a ich počty.
  • Napíšte program, ktorý sa opýta správcu, čo hľadá.
  • Ak nezadá nič, skončí, inak bude pokračovať.
  • Ak položka v špajzi nie je, napíše: „Bohužiaľ, toto sa už minulo.“
  • Inak zo zásob odráta 1 kus a:
    • Ak už nezostalo nič, napíše: „Pozor, vzal si posledný kus, treba skočiť na trh a kúpiť {názov}!“
    • Ak zostáva menej ako 5 kusov, napíše: „Pozor, zostáva už len {počet} ks, treba skočiť na trh a kúpiť {názov}!“
    • Inak napíše: „Zásoby sú v poriadku, zostáva ešte {počet} ks.“
  • Vráti sa na otázku, čo správca hľadá.
Strážny anjel (riešenie)
spajza = {"chlieb": 7, "syr": 3, "olivy": 2, "datle": 4}

while True:
    hladane = input("Čo hľadáš v špajzi? (Ak už nič, len stlač ENTER): ").lower()
    if not hladane: break
    
    if not spajza.get(hladane):
        print("Bohužiaľ, toto sa už minulo.")
    else:
        spajza[hladane] -= 1
        if spajza[hladane] == 0:
            print(f"Pozor, vzal si posledný kus, treba skočiť na trh a kúpiť {hladane}!")
        elif spajza[hladane] < 5:
            print(f"Pozor, zostáva už len {spajza[hladane]} ks, treba skočiť na trh a kúpiť {hladane}!")
        else:
            print(f"Zásoby sú v poriadku, zostáva ešte {spajza[hladane]} ks.")

Úloha 13: Stratené ovce

Kontext: Dobrý pastier má zoznam s číslami svojich oviec. Pri sčítaní v ohrade si však niektoré zapísal viackrát, lebo ovce sa v behu pomiešali. Potrebuje zistiť, koľko má oviec v skutočnosti.

Zadanie:

  1. Máte zoznam s číslami zapísaných oviec, napr.: 1, 5, 2, 1, 10, 5, 7, 2, 99, 1.
  2. Vytvorte zoznam oviec bez opakovania.
  3. Vypočítajte, koľko bolo „duplikátov“ a vypíšte.
  4. Vypíšte správny zoznam oviec, s ich číslami zoradenými od najmenšieho.
Strážny anjel (riešenie)
zoznam_oviec = [1, 5, 2, 1, 10, 5, 7, 2, 99, 1]

# prevod na množinu odstráni duplikáty
mnozina_oviec = set(zoznam_oviec)

rozdiel = len(zoznam_oviec) - len(mnozina_oviec)
if rozdiel:
    slovo = "oviec" if rozdiel >= 5 else "ovce" if rozdiel >= 2 else "ovcu"
    print(f"Pastier milý, v zozname si {rozdiel} {slovo} zarátal opakovane.")

print("Tu sú tvoje ovečky zoradené:", sorted(mnozina_oviec))

Úlohy s funkciami, lambdou a mapou

Úloha 14: Olej v lampách

Kontext: Päť múdrych panien si vzalo lampy a olej v nádobách. Potrebujeme funkciu, ktorá nám povie, či majú dosť oleja na celú noc.

Zadanie:

  1. Vytvor funkciu SkontrolujOlej, ktorá prijme jeden parameter: objem.
  2. Funkcia vráti text:
    • „Lampa svieti jasne.“, ak je objem aspoň 50 ml.
    • „Plameň bliká, dolej olej!“, ak je objem menší ako 50 ml.
  3. V hlavnom programe zavolaj túto funkciu s rôznymi číslami a výsledok vypíš.
Strážny anjel (riešenie)
def SkontrolujOlej(objem):
    if objem >= 50: return "Lampa svieti jasne."
    return "Plameň bliká, dolej olej!"

# testovanie funkcie
p = 0
for objem in (100, 20, 50):
    p += 1
    print(f"Panna {p}, objem {objem}: {SkontrolujOlej(objem)}")

Úloha 15: Svadba v Káne Galilejskej

Kontext: Na svadbe chýba víno. Máme niekoľko nádob s vodou, ktoré sa premenia na víno. Potrebujeme vypočítať celkový objem.

Zadanie:

  1. Napíš funkciu PremenVodu, ktorá má dva parametre: pocetobjem.
  2. Funkcia vypočíta celkový objem a vráti výsledok.
  3. Ak nie je uvedený objem, nastav jeho predvolenú hodnotu na 40 litrov.
  4. Zavolaj funkciu tak, že určíš len počet nádob, a vypíš, koľko litrov vína vzniklo.
Strážny anjel (riešenie)
def PremenVodu(pocet, objem = 40):
    return pocet * objem

pocet = const(6)
print("Zázrak sa stal! Máme", PremenVodu(pocet), "litrov najlepšieho vína.")

Úloha 16: Poriadok v zástupoch

Kontext: K Jánovi Krstiteľovi prúdia zástupy z celého Júdejska aj okolia Jordánu. Máme zoznam dvojíc, kde každá obsahuje názov mesta a vzdialenosť v km. Ján chce mať v zozname poriadok a chce si návštevníkov zoradiť podľa vzdialenosti, ktorú museli prekonať (od najbližších po najvzdialenejších).

Zadanie:

  • Vytvor zoznam s aspoň štyrmi mestami, napr. Jeruzalem: 35, Nazaret: 120, Jericho: 10, Betlehem: 42.
  • Pomocou anonymnej funkcie (lambda) zoraď tento zoznam podľa vzdialenosti.
  • Zoznam prehľadne vypíš.
Strážny anjel (riešenie)
# zoznam miest a ich vzdialenosti k Jordánu
mesta = [
    ("Jeruzalem", 35),
    ("Nazaret", 120),
    ("Jericho", 10),
    ("Betlehem", 42)
]

# zoradenie pomocou anonymnej funkcie
# lambda x: x[1] hovorí: „vezmi 2. prvok v n-tici“
mesta.sort(key = lambda mesto: mesto[1])

print("Zástupy zoradené podľa námahy na ceste:")
for m in mesta: print(f"- {m[0]}: {m[1]} km")

Úloha 17: Rybársky úlovok

Kontext: Apoštoli Peter a Ondrej vytiahli siete. V zozname majú váhu rýb v librách, ale my ich potrebujeme previesť na kilogramy (zjednodušene: 1 libra = 0,5 kg).

Zadanie:

  1. Vytvor náhodný zoznam hmotností rýb v librách - počet rýb nech je od 3 do 7 a ich hmotnosť od 1 do 5. Zoznam vypíš.
  2. Pomocou mapy a lambdy premeň všetky hodnoty na kilogramy a zaokrúhli ich na 2 desatinné miesta, aj tento zoznam vypíš.
  3. Pomocou ďalšej mapy a lambdy preveď každé číslo predošlého zoznamu na text s presne 2 desatinnými miestami, pridanou jednotkou „kg“ a desatinnou čiarkou namiesto bodky. Tento zoznam pospájaj bodkočiarkou a vypíš.
Strážny anjel (riešenie)

Pri tomto riešení si tvoj strážny anjel musel zájsť po radu až ku kráľovi Šalamúnovi - toto je už programátorská múdrosť najvyššieho kalibru!

from random import uniform, randint

# vygenerovanie náhodných úlovkov a zaokrúhlenie: využije generátor zoznamu cez for
vahy_libry = [round(uniform(1, 5), 2) for _ in range(randint(3, 7))]
print("Pôvodne zaznamenané váhy úlovkov v librách:", vahy_libry)

# prevod na kg a zaokrúhlenie: lambda berie váhu, premení a zaokrúhli
vahy_kg = tuple(map(lambda v: round(v * 0.5, 2), vahy_libry))
print("Váhy úlovkov v kilogramoch:", vahy_kg)

# pekný výpis s čiarkami a jednotkami, oddelené bodkočiarkou:
# lambda prevedie číslo na text, pridá "kg" a zmení bodku na čiarku
# map túto lambdu aplikuje na tuplu váh a join pospája
vahy = "; ".join(map(lambda v: f"{v:.2f} kg".replace(".", ","), vahy_kg))
print("Pekný zoznam váhy úlovkov v kilogramoch:", vahy)

# vygenerovanie 2. lovu a riešenie „na jeden ťah“:
vahy2 = "; ".join(f"{uniform(1, 5) * 0.5:.2f} kg".replace(".", ",") for _ in range(randint(3, 7)))
print("Pekný zoznam z druhého lovu:", vahy2)

Pri riadku s riešením „na jeden ťah“ už aj kráľ Šalamún uznanlivo pokýval hlavou, odložil žezlo a tvojmu strážnemu anjelovi dal „high-five“. Povedal, že rozdeliť dieťa na polovicu bol dobrý trik, ale vtesnať generovanie, prepočet, formátovanie aj výmenu bodiek za čiarky do jedného riadku, to je skutočná efektivita. Vraví sa tomu aj šalamúnsky skrat - keď chceš celú múdrosť sveta vtesnať do jediného riadku. Odvtedy vraj anjeli na nebeskom GitHube hviezdičkujú len takéto riešenia.

Úloha 18: Dary troch kráľov

Kontext: Traja králi priniesli Ježiškovi dary. Každý dar má svoju hmotnosť a názov. Potrebujeme ich v jasličkách upratať tak, aby tie najťažšie boli navrchu.

Zadanie:

  1. Vytvorte zoznam darov, kde každá položka je dvojica údajov s názvom a hmotnosťou v gramoch, napr.: ("zlato", 500), ("kadidlo", 200), ("myrha", 200), ("vlna", 1000).
  2. Zoraďte tento zoznam podľa hmotnosti od najťažšej.
  3. Ak majú dva dary rovnakú hmotnosť (ako kadidlo a myrha), zoraďte ich v rámci toho abecedne.
  4. Vypíšte zoznam v prehľadnom tvare aj s poradovým číslom a hmotnosťou.
Strážny anjel (riešenie)
dary = [("zlato", 500), ("kadidlo", 200), ("myrha", 200), ("vlna", 1000)]

# triedenie: kľúč vráti (-hmotnosť, názov), mínus zabezpečí zostupné poradie
dary.sort(key = lambda d: (-d[1], d[0]))

print("Upratané dary v jasličkách:")
# enumerate vytvorí zoznam s poradovým číslom (od 1) a darom (ktorý je tupla)
# poradové číslo priradí do i, tuplu daru rozloží do nazov a vaha
for i, (nazov, vaha) in enumerate(dary, 1):
    print(f" {i}. {nazov} ({vaha} g)")

Úlohy na zachytenie a ošetrenie chýb

Úloha 19: Spravodlivé delenie

Kontext: Kráľ Šalamún má rozdeliť 100 zlatých mincí medzi skupiny mudrcov. Ak sa však pred kráľa nedostaví žiadna skupina, program nesmie skončiť škaredou systémovou chybou.

Zadanie: Vytvorte program, ktorý načíta počet skupín a vypíše, koľko mincí dostane každá skupina:

  1. Ošetrite možné chybové stavy:
    • Pri chybe ZeroDivisionError vypíšte šalamúnsku hlášku: „Keď niet komu deliť, mince zostávajú v kráľovskej pokladnici.“
    • Pri chybe ValueError oznámi: „Môj kráľ, počet skupín musí byť vyjadrený číslom!“
  2. Výsledný podiel vypíšte elegantne - bez zbytočných núl na konci, ale maximálne na 2 desatinné miesta.
Strážny anjel (riešenie)
mince = const(100)
try:
    podiel = mince / int(input("Zadaj počet skupín mudrcov: "))
except ZeroDivisionError:
    # táto časť sa spustí, ak používateľ zadá 0
    print("Keď niet komu deliť, mince zostávajú v kráľovskej pokladnici.")
except ValueError:
    # táto časť sa spustí, ak používateľ nezadá číslo (zadá napr. písmená)
    print("Môj kráľ, počet skupín musí byť vyjadrený číslom!")
else:
    print(f"Každá skupina dostane {round(podiel, 2):g} mincí.")