rendered paste bodydef sjekksum(pnr):
pnr = str(pnr) # Om nokon skulle sende inn eit fødselsnr som long og ikkje streng
if len(pnr) < 9:
raise "Må ha minst 9 siffer i personnr før sjekksumming"
d1 = int(pnr[0])
d2 = int(pnr[1])
m1 = int(pnr[2])
m2 = int(pnr[3])
y1 = int(pnr[4])
y2 = int(pnr[5])
i1 = int(pnr[6])
i2 = int(pnr[7])
i3 = int(pnr[8])
s1 = (11 - ((3*d1 + 7*d2 + 6*m1 + 1*m2 + 8*y1 + 9*y2 + 4*i1 + 5*i2 + 2*i3) % 11)) % 11
s2 = (11 - ((5*d1 + 4*d2 + 3*m1 + 2*m2 + 7*y1 + 6*y2 + 5*i1 + 4*i2 + 3*i3 + 2*s1) % 11) ) % 11
if ((s1 < 0 ) or (s1 > 9)):
raise "WTF! s1 == %d" % s1
if ((s2 < 0 ) or (s2 > 9)):
raise "WTF! s2 == %d" % s2
# Vi plukkar ut berre dei 9 fyrste sifra av det innsendte
return (pnr[0:9] + "%.1d%.1d" % ( s1, s2) )
...
>>> print sjekksum("010180000")
01018000055