Python Blog

Różne ciekawostki ze świata Pythona i nie tylko.


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.")