Autorské riešenie
Predstavme si, že by zadanie úlohy povoľovalo iba jedinú krabicu, v ktorej má Jožko ovocie. Povedzme, že chce zistiť počet jabĺk v tejto krabici. Na riešenie by sme mohli využiť obyčajný for cyklus, ktorý pre každý predmet zistí, či je to hľadané ovocie alebo nie a na základe toho zvýši naše počítadlo. #krabica.py def pocet_kusov(ovocie, krabica): pocet_ovocia = 0 for co_vyberiem in krabica: if co_vyberiem == ovocie: pocet_ovocia += 1 return pocet_ovocia Teraz pridajme podmienku zo zadania, a síce, že to, čo Jožko z krabice vyberie nemusí byť ovocie, ale môže to byť aj ďalšia krabica s ovocím. V takomto prípade musíme zistiť počet kusov hľadaného ovocia v základnej krabici rovnako ako doteraz, a potom k tomu počtu pripočítať počet kusov tohto ovocia vo vnorených krabiciach. Lenže na spočítanie počtu kusov hľadaného ovocia v krabici sme už pripravili funkciu - teda ju len zavoláme a k nášmu počítadlu pripočítame jej návratovú hodnotu. To, že predmet, ktorý sme práve vybrali z krabice je ďalšia krabica, vieme programátorsky zistiť pomocou zistenia typu predmetu (type(co_vyberiem) == list) alebo pomocou overenia, či je daný predmet inštanciou triedy list (isinstance(co_vyberiem, list)). #krabica.py def pocet_kusov(ovocie, co_drzim): pocet_ovocia = 0 for co_vyberiem in co_drzim: if type(co_vyberiem) == list: pocet_ovocia += pocet_kusov(ovocie, co_vyberiem) elif co_vyberiem == ovocie: pocet_ovocia += 1 return pocet_ovocia Vaše zaujímavé riešenia a najčastejšie chyby Medzi iné zaujímavé riešenia, ktoré ste priniesli, patrili napríklad:
Chyby, ktoré sa objavili pri riešení tejto úlohy:
|
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |