Lauer on februar 10 2005 09:26 pm 0

Python

Når man skal lære et nyt scripting-sprog er et af de første problemer altid – hvad skal man dog lave. Tilfældigvis havde jeg læst lidt om at fremstille et fiktivt CPR-nummer et par dage forinden, så hvorfor ikke bare prøve at skrive et python program der kunne det.

Resultatet kan ses herunder. Det skal dog lige bemærkes, at det sikkert kunne laves meget bedre og i scriptet er der en del begrænsninger, men det virker da nogenlunde. Det var i hvert fald nok til at jeg fik lyst til at kode lidt PHP igen :)

!/usr/bin/python

-- coding: utf-8 --

#

Fremstilling af CPR-nummer

AUTHOR:

Jesper Laursen

#

TODO:

Angivelse af køn

Automatisk fremstilling af nyt cpr hvis random-tal er forkerte

#

NOTE:

Virker kun ved fødselsdage mellem 1900 og 1999

Dette er mit første script i python (efter HelloWorld.py)

#

SEE ALSO:

Fik inspiration fra: http://www.oes.dk/sw2823.asp

# import sys from random import randint from random import choice

if len(sys.argv) != 2: print '' print 'Usage: '+ sys.argv[0] + ' ddmmyy' print '' sys.exit();

date = sys.argv[1]

day = date[0:2] month = date[2:4] year = date[4:6]

Første til forhøjes med 6

cpr = [int(date[0])+6]

resterende tal overføres

for x in date[1:]: cpr.append(int(x))

et 7. tal vælges

if int(year) < 37: cpr.append(randint(0, 3)) else: cpr.append(choice([0, 1, 2, 3, 4, 9]))

ciffer 8. og 9. er tilfældige

cpr.append(randint(0,9)) cpr.append(randint(0,9))

De forskellige tal har vægte

power = [4, 3, 2, 7, 6, 5, 4, 3, 2]

De forskellige tal ganges med deres vægt

cprtmp = [] for i in range(len(cpr)): cprtmp.append(power[i] * cpr[i])

10. cifre er summen af resten

cprtmp.append(sum(cprtmp))

Modulus 11 test

tmp = 11 - (cprtmp[9] % 11); if tmp == 11: cpr.append(0) elif tmp == 10: sys.stderr.write('Fejl - ugyldige randomtal - prøv igen') sys.exit() else: cpr.append(tmp)

1. cifre bliver ændret tilbage

cpr[0] = int(day[0])

Listen med cifre udskrives

for x in cpr: print x, Det var så mit første script – kom endelig med nogle kommentar. Jeg regner dog ikke med at skulle bruge dette script-sprog til noget nyttigt, men det var da meget sjovt bare at prøve det.

Filed under Opensource

Comments are closed.