Algorytm PESEL
(1/1)
Majlosz:
Algorytm sprawdzania poprawności peselu:
Kod
import re
def sprawdz(pesel):
#Sprawdzanie regexpem
if ( re.match('[0-9]{11}$',pesel)):
pass
else:
return 0
# Sprawdzenie sumy kontrolnej...
l=int(pesel[10])
suma =((l*int(pesel[0]))+(3*int(pesel[l]))+(7*int(pesel[2]))+(9*int(pesel[3]))+((l*int(pesel[4])))+(3*int(pesel[5]))+(7*int(pesel[6]))+(9*int(pesel[7]))+(l*int(pesel[8]))+(3*int(pesel[9])))
kontrolka=10-(suma %10)
if kontrolka== 10:
kontrolka= 0
else:
kontrolka=kontrolka
#kontrolka i sprawdzenie zgodnosci
if ((kontrolka== 10)or(kontrolka== 0)):
return 0
else:
return 1
def index():
pobranie= raw_input('Podaj PESEL: ')
p=int(pobranie[9]) %2
r=int(pobranie[0:2])
m=pobranie[2:4]
d=pobranie[4:6]
if (sprawdz(pobranie)):
#sprawdzamy plec
if p ==1:
plec = "Mezczyzna"
else:
plec = "Kobieta"
#sprawdzamy rok urodzenia
if r<99 and r>10:
pr=1900
else:
pr=2000
#sprawdzamy miesiac
if m =='01':
mies="Stycznia"
elif m =='02':
mies="Lutego"
elif m =='03':
mies="Marca"
elif m =='04':
mies="Kwietnia"
elif m =='05':
mies="Maja"
elif m =='06':
mies="Czerwca"
elif m =='07':
mies="Lipca"
elif m =='08':
mies="Siperpnia"
elif m =='09':
mies="Wrzesnia"
elif m =='10':
mies="Pazdzierniaka"
elif m =='11':
mies="Listopada"
elif m =='12':
mies="Grudnia"
else:
print "Zly PESEL !"
print "Data urodzenia: %s %s %d %d"
print "Plec: %s"% plec
else:
print "Zly PESEL !"
print "Twoja data urodzenia to: ",pr+r ,m ,d
print "Twoja plec to: " ,plec
index()
D0han:
Kod
#korekta
if kontrolka == 10:
kontrolka = 0
else:
kontrolka = kontrolka
Tak właśnie to czytam.
Kod
kontrolka = kontrolka
Co to ma być :D?
Majlosz:
Teraz dobrze :).
Katharsis:
Algorytm do validacji Peselu.
Autor: Katharsis
Kod
import sys
raw_input = sys.stdin.readline()
ilosc = int(raw_input[:-1])
wyniki = []
for x in range(ilosc):
raw_input = sys.stdin.readline()
def suma_kontorlna(raw_input):
ciag = raw_input[:-1]
ciag = ' '.join(ciag).split()
pesel = map(int, ' '.join(ciag).split())
pesel[1] = pesel[1]*3
pesel[2] = pesel[2]*7
pesel[3] = pesel[3]*9
pesel[5] = pesel[5]*3
pesel[6] = pesel[6]*7
pesel[7] = pesel[7]*9
pesel[9] = pesel[9]*3
suma = sum(pesel)
suma_last = str(suma)
suma_last = ' '.join(suma_last).split()
suma_last = map(int, suma_last)
if suma > 0 and suma_last[-1] == 0:
wyniki.append("D")
else:
wyniki.append("N")
suma_kontorlna(raw_input)
for x in wyniki:
sys.stdout.write("%s\n" % x)
D - poprawny, N - niepoprawny. Na początku podajemy ilość (cyfrę) peseli, które chcemy sprawdzić:
Cytuj
>>>
3
44051401458
12345678901
88121907336
D
N
D
>>>
mysz:
Moja wersja sprzed chyba dwóch lat:
Kod
def check_pesel(pesel):
sum, ct = 0, [1, 3, 7, 9, 1, 3, 7, 9, 1, 3, 1]
for i in range(11):
sum += (int(pesel[i]) * ct[i])
return (str(sum)[-1] == '0')
Nawigacja