def 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