Skrypt sprawdzający numer PESEL
Skrypt w pythonie sprawdzajacy poprawność numeru PESEL (Powszechny Elektroniczny System Ewidencji Ludności)
Skrypt
def czy_poprawny_pesel(pesel):
# Sprawdź, czy długość jest poprawna
if len(pesel) != 11:
return False
# Sprawdź, czy wszystkie znaki są cyframi
if not pesel.isdigit():
return False
# Wyodrębnij składniki
rok = int(pesel[0:2])
miesiac = int(pesel[2:4])
dzien = int(pesel[4:6])
suma_kontrolna = int(pesel[10])
# Sprawdź miesiąc
if miesiac < 1 or miesiac > 12:
return False
# Sprawdź dzień
dni_w_miesiacu = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
if rok % 4 == 0 and (rok % 100 != 0 or rok % 400 == 0):
dni_w_miesiacu[2] = 29 # Rok przestępny
if dzien < 1 or dzien > dni_w_miesiacu[miesiac]:
return False
# Sprawdź sumę kontrolną
wagi = [1, 3, 7, 9, 1, 3, 7, 9, 1, 3, 1]
obliczona_suma_kontrolna = sum(int(cyfra) * waga for cyfra, waga in zip(pesel[:10], wagi)) % 10
if obliczona_suma_kontrolna != 0:
obliczona_suma_kontrolna = 10 - obliczona_suma_kontrolna
return obliczona_suma_kontrolna == suma_kontrolna
if __name__ == '__main__':
pesel_do_sprawdzenia = str(input('Podaj PESEL: '))
if czy_poprawny_pesel(pesel_do_sprawdzenia):
print(f"Numer PESEL {pesel_do_sprawdzenia} jest poprawny.")
else:
print(f"Numer PESEL {pesel_do_sprawdzenia} nie jest poprawny.")