Lage gyldige bankkontonummer

Når man utvikler en løsning som krever gyldige inputverdier for f.eks. bankkontonummer er det ofte et problem at man må ha testverdier som passerer en gyldighetssjekk. Veldig ofte gjør man bruk av MOD11 sjekken, dvs. at etter de ti første sifferne kommer et sjekksiffer som sjekker at det er 90+% sannsynlighet for at de foregående sifferne er skrevet inn riktig. En slik sjekk brukes blant annet både i norske personnummer og for bankkontonummer.

Om du trenger å lage et slikt gyldig nummer kan du lagre følgende skript i en fil kalt mod11.py og kjøre den i terminal ved å skrive

python mod11.py 1234567890

Du får da ut et ekstra siffer på enden av strengen din som er et gyldig sjekksiffer. For den foregående strenger får vi da 12345678903, som du f.eks. kan oppgi som bankkontonummer.

Skriptet er som følger (rappet fra Wikipedia)

#!/usr/bin/env python
import sys
def kid_mod11_wiki(a):
    cross = sum([int(val)*[2,3,4,5,6,7][idx%6] for idx,val in enumerate(list(str(a))[::-1])])
    return "%s%s" % (a,cross % 11 == 10 and '-' or 11-(cross % 11)) 

if __name__ == "__main__":
    print( kid_mod11_wiki(sys.argv[1]))

Legg igjen en kommentar

Fyll inn i feltene under, eller klikk på et ikon for å logge inn:

WordPress.com-logo

Du kommenterer med bruk av din WordPress.com konto. Logg ut / Endre )

Twitter picture

Du kommenterer med bruk av din Twitter konto. Logg ut / Endre )

Facebookbilde

Du kommenterer med bruk av din Facebook konto. Logg ut / Endre )

Google+ photo

Du kommenterer med bruk av din Google+ konto. Logg ut / Endre )

Kobler til %s

%d bloggers like this: