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

[0] Indeks wiadomości