Dve rekurzivni funkciji za sezname
Obvezna naloga: vsako drugo nič
Napišite funkcijo vsako_drugo_0(s), ki prejme seznam števil in vrne True, če je vsako drugo število 0, vmesna števila pa so različna od 0. Tudi prvo število mora biti različno od 0. Funkcija vrne True za sezname, kot so [5, 0, -1, 0, 4, 0], [5, 0, -1, 0, 4], [5, 0], [5] in celo [], ter False za sezname, kot [5, 0, -1, 4, 0], [5, 0, 0, 0, -1, 4, 0] in [0, 5, 0, 1].
Če znate, jo napišite tako, da boste napisali eno samo funkcijo. Če ne, pač dve. Samo brez zank!
Neobvezna dodatna naloga: vsota
Kdor je frajer, frajerka, pa sprogramira še funkcijo, ki vrne vsoto vseh števil v takšnem seznamu: [5, [1, 3, [2, 4, [1, 4], [4, 2], [1, 2, [3, 1]]], 2, [4, 5]], 4, [1, 5]].
Potrebovali boste tole: če imamo nek x, lahko s klicem isinstance(x, int) izvemo, ali gre za int.
s = [1, 2, [3, 4, 1], 5]
for x in s:
if isinstance(x, int):
print(x, "je int")
else:
print(x, "ni int")
izpiše
1 je int
2 je int
[3, 4, 1] ni int
5 je int
Funkcijo najprej naredite rekurzivno. Pri tem smete uporabljati zanke! To vam celo priporočam.
Kdor je res res frajerka ali frajer, pa bo potem enako funkcijo naredil še brez rekurzije, s čisto običajnimi zankami.
Pri programiranju ne uporabljajte raznih Pythonovih trikov, ki bi seznam pretvorili v običajni seznam. Garažne finte, kot je tale ne veljajo.
>>> s = [5, [1, 3, [2, 4, [1, 4], [4, 2], [1, 2, [3, 1]]], 2, [4, 5]], 4, [1, 5]]
>>> t = eval("[" + repr(s).replace("[", "").replace("]", "") + "]")
>>> t
[5, 1, 3, 2, 4, 1, 4, 4, 2, 1, 2, 3, 1, 2, 4, 5, 4, 1, 5]
Testi
- 7. januar 2026, 18:25