Napiši funkcijo izpisi_vse(kraji), ki kot argument dobi slovar,
kakršen je gornji, in izpiše vse kraje v njem.
>>> izpisi_vse(hisa)
Prvo nadstropje
otroška soba
Martin
ostali piškoti
soba
računalnik
jaz
Klet
shramba
zgornja polica
škatla piškotov
crknjena miš
pol piškota
spodnja polica
kisle kumare
rdeča pesa
kurilnica
peč
metla
Vrstni red v izpisu bo morda nekoliko premešan, saj slovarji, kot vemo, ne
poznajo (vrstnega) reda.
Obvezna naloga
Napiši funkcijo prestej(kraji), ki vrne število vseh krajev in
reči, ki se pojavijo v podanem slovarju.
Kot sem povedal tudi na predavanjih: pri reševanju je prepovedana uporaba globalnih spremenljivk! Vse spremenljivke morajo biti definirane znotraj funkcij in nobena ne smet biti definirana kot globalna.
>>> prestej(hisa)
19
>>> prestej(svet)
33
19, recimo, je ravno število vrstic, ki jih za slovar hisa
izpiše funkcija izpisi_vse.
Dodatna naloga
Napiši funkcijo kje_je(kraj, kraji), ki kot argument dobi kraj ali
stvar (na primer "kisle kumare") in slovar krajev in stvari, kot
rezultat pa vrne pot do tega kraja ali reči, in sicer v obliki seznama.
Če kraja ne najde, naj vrne None. (Namig: če boste prav
programirali, s tem ne boste imeli dodatnega dela; to se bo zgodilo kar
"samo od sebe".)
Kot sem povedal tudi na predavanjih: pri reševanju je prepovedana uporaba globalnih spremenljivk! Pri tej nalogi pa je z njimi tako ali tako težje kot brez njih.
Testni primeri so razdeljeni v dva testa. Prvi so preprostejši in preglednejši, drugi iščejo po večji strukturi. Rešitev mora seveda prestati oboje.
Rešitev tokrat ni kaj komentirati: preberite si vse, kar smo napisali o Karlu Velikem. Tole je isto.
def izpisi_vse(kraji):
for k in kraji:
print(k)
izpisi_vse(kraji[k])
def prestej(kraji):
s = 0
for k in kraji:
s += 1 + prestej(kraji[k])
return s
def kje_je(kraj, kraji):
for k in kraji:
if k == kraj:
return [k]
pot = kje_je(kraj, kraji[k])
if pot:
return [k] + pot
Last modified: Wednesday, 20 November 2013, 11:05 PM