Posebnež

Koliko bombonov ima kateri otrok, shranjujemo v slovarju, katerega ključ je ime otroka, pripadajoča vrednost pa število bombonov.

Recimo, da imajo vsi otroci enako bombonov, le eden jih ima več ali manj kot ostali. Napišite funkcijo posebnez(bomboni), ki prejme takšen slovar (z vsaj tremi elementi) in vrne ime tega otroka.

Prafaktorji in delitelji

Napiši funkcijo prafaktorji( n), ki razcepi podano število n na prafaktorje in vrne razcep v obliki slovarja. Če pokličemo prafaktorji(1400), vrne slovar {2: 3, 5: 2, 7: 1}, saj je 1400 = 235271.

Nato napišite funkcijo gcd(a, b), ki prejme dva slovarja, kakršna vrača prejšnja naloga, in vrne največji skupni delitelj števil, ki ju predstavljata ta dva slovarja. Če pokličemo gcd({2: 3, 5: 2, 7: 1}, {2: 2, 7: 2, 11:1}), vrne 28. Prvi slovar namreč predstavlja število 1400 in drugi število 2156, njun največji skupni delitelj pa je 28. Nalogo reši, ne da bi izračunal števili (npr. 1400 in 2156). Delaj s slovarjema, ki si ju dobil.

Namig: 1400 = 235271 in 2156 = 2272111 , zato je njun največji skupni delitelj enak 2271.

Anagrami

Napiši funkcijo, ki kot argument prejme dve besedi in pove (tako da vrne True ali False), ali sta anagrama. Besedi sta anagrama, če lahko dobimo eno besedo iz druge tako, da jima premešamo črke.

>>> anagram("pirat", "ripat")
True
>>> anagram("tipka", "pirat")
False
>>> anagram("tipka", "piikat")
False 

Menjave

Napiši funkcijo zamenjano(s, menjave), ki prejme seznam s in slovar menjave. Vrne naj nov seznam, v katerem so vsi elementi seznama, ki nastopajo kot ključi v slovarju, zamenjani s pripadajočimi vrednostmi. Elemente, ki se ne pojavijo v slovarju, pusti pri miru.

Klic zamenjano(["Ana", "Ana", "Berta", "Ana", "Cilka"], {"Ana": "Peter", "Berta": "Ana"}) vrne ["Peter", "Peter", "Ana", "Peter", "Cilka"].

Funkcija zamenjano ne sme spremeniti podanega seznama s.

Poleg tega napiši podobno funkcijo zamenjaj(s, menjave), ki pa ne vrne ničesar temveč ustrezno spremeni podani seznam s.

Osrednja obveščevalna služba

Osrednja obveščevalna služba se je odločila spremljati elektronsko pošto določenih osebkov, pri čemer jo zanimajo predvsem imena, ki se pojavljajo v njej. Kot možno ime štejemo besede, ki se začnejo z veliko začetnico in nadaljujejo z malimi. Radi bi imeli program, ki bi za dano elektronsko sporočilo naštel vsa imena, ki se pojavijo v njem in število njihovih pojavitev.

Nekdo jim je že napisal program, ki vzame sporočilo in ga predela v sporočilo brez ločil.

Začnemo torej s takšnim nizom:

msg = """Dragi Ahmed kako si kaj Upam da so otroci že zdravi Mustafa
Osama in jaz smo se šli danes malo razgledat in kaže kar dobro Abdulah pa 
ni mogel zraven je šel v Pešavar prodat še tri kamele Osama sicer pravi da se 
mu to pred zimo ne splača ampak saj veš kakšen je Abdulah tak je kot Harun 
nič jima ne dopoveš še Osama ne Jibril me kliče moram iti oglasi se kaj na Skype 
tvoj Husein""" 
Program naj izpiše nekaj takšnega:

Dragi 1
Ahmed 1
Upam 1
Mustafa 1
Osama 3
Abdulah 2
Pesavar 1
Harun 1
Jibril 1
Skype 1
Husein 1
Последна промена: вторник, 10 март 2026, 18:11