Tag Archives: python

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.