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.