Vse naloge se da lepo rešiti z izpeljenimi seznami in izpeljanimi množicami. Zanki for in while sta danes prepovedani.

Vsota kvadratov

Izračunajte vsoto kvadratov prvih stotih naravnih števil.

12 + 22 + ... + 1002 = ?

Vsota je 338350.

Kakšna pa je vsota kvadratov vseh palindromnih števil, manjših od 1000?

12 + 22 + ... + 3232 + 3332 + 3432 + ... + 9992 = ?

Vsota je 33454620.

def vsota_kvadratov():
    return sum(x**2 for x in range(101))

def vsota_palindromov():
    return sum(x**2 for x in range(1001) if str(x) == str(x)[::-1])

Zamenjava črk

Napišite funkcijo subs(niz, polozaj), ki premeče črke v nizu glede na podane nove položaje.

>>> subs("komar", "23401")
'marko'

def subs(niz, polozaj):
    return "".join(niz[int(i)] for i in polozaj)

Povprečje in standardni odklon

Napišite funkciji, ki izračunata povprečje in standardni odklon populacije.

>>> xs = [183, 168, 175, 176, 192, 180]
>>> mean(xs)
179.0
>>> std(xs)
7.43863786814

def mean(xs):
    return sum(x for x in xs) / len(xs)

from math import sqrt
def std(xs):
    return sqrt(sum((x - mean(xs)) ** 2 for x in xs) / len(xs))

Morsejeva abeceda

Napišite funkcijo, ki pretvori sporočilo v Morsejevo abecedo in funkcijo, ki naredi nasprotno.

>>> txt2morse('TE A')
'- .  .-'
>>> txt2morse('HELLO WORLD')
'.... . .-.. .-.. ---  .-- --- .-. .-.. -..'
>>> morse2txt('.... . .-.. .-.. ---  .-- --- .-. .-.. -..')
'HELLO WORLD'

Če ste pozabili, ali pa morda nikoli niste znali, Morsejeva abeceda zgleda takole:

'A': '.-',
'B': '-...',
'C': '-.-.',
'D': '-..',
'E': '.',
'F': '..-.',
'G': '--.',
'H': '....',
'I': '..',
'J': '.---',
'K': '-.-',
'L': '.-..',
'M': '--',
'N': '-.',
'O': '---',
'P': '.--.',
'Q': '--.-',
'R': '.-.',
'S': '...',
'T': '-',
'U': '..-',
'V': '...-',
'W': '.--',
'X': '-..-',
'Y': '-.--',
'Z': '--..',
'1': '.----',
'2': '..---',
'3': '...--',
'4': '....-',
'5': '.....',
'6': '-....',
'7': '--...',
'8': '---..',
'9': '----.',
'0': '-----',

morse = {'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.',
'G': '--.', 'H': '....', 'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..',
'M': '--', 'N': '-.', 'O': '---', 'P': '.--.', 'Q': '--.-', 'R': '.-.',
'S': '...', 'T': '-',  'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-',
'Y': '-.--', 'Z': '--..', '1': '.----', '2': '..---', '3': '...--',
'4': '....-', '5': '.....', '6': '-....', '7': '--...', '8': '---..',
'9': '----.', '0': '-----', ' ': ''}

def txt2morse(niz):
    return " ".join(morse[i] for i in niz)

def morse2txt(koda):
    txt = {vrednost: kljuc for kljuc, vrednost in morse.items()}
    return "".join(txt[znak] for znak in koda.split(" "))

ISBN

Napišite funkcjio, ki preveri ali je podan ISBN veljaven.

>>> valid('0306406152'), valid('0553382578'), valid('0553293370'), valid('912115628X') # primer veljavnih ...
(True, True, True, True)
>>> valid('03064061522'), valid('1553382578'), valid('91211562811') # ... in neveljavnih ISBN.
(False, False, False)

def valid(s):
    return len(s) == 10 and "0123456789X"[sum((i+1)*int(st) for i, st in enumerate(s[:9]))%11] == s[9]

Zadnja sprememba: torek, 17. marec 2026, 08.46