Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3.6
- # coding=utf-8
- import datetime
- __author__ = "Dariusz Dębicki"
- __copyright__ = "Copyright 2018, Dariusz Dębicki"
- __license__ = "GPL"
- __version__ = "1.0"
- __email__ = "dariusz.debicki@protonmail.com"
- # Project PESEL, Python 3.6
- # Na podstawie numeru pesel określa płeć, wiek oraz podaje ilość przeżytych dni.
- imie = str(input("Podaj swoje imię: "))
- pesel = str(input("Podaj swój PESEL: "))
- # Sprawdzanie poprawności numeru PESEL
- # ========================================================================
- # Poniższa metoda sprowadza się do obliczenia sumy:
- # 1×a + 3×b + 7×c + 9×d + 1×e + 3×f + 7×g + 9×h + 1×i + 3×j + 1×k
- # (gdzie litery oznaczają kolejne cyfry numeru), a następnie sprawdzenia
- # czy reszta z dzielenia przez 10 jest zerem. Innymi słowy, jeśli ostatnia
- # cyfra otrzymanej sumy jest zerem, to numer PESEL jest poprawny,
- # w przeciwnym razie numer jest błędny.
- # Convert string pesel to table integer:
- p1 = int(pesel[0])
- p2 = int(pesel[1])
- p3 = int(pesel[2])
- p4 = int(pesel[3])
- p5 = int(pesel[4])
- p6 = int(pesel[5])
- p7 = int(pesel[6])
- p8 = int(pesel[7])
- p9 = int(pesel[8])
- p10 = int(pesel[9])
- p11 = int(pesel[10])
- # Calculate checksum
- checksum = 1 * p1 + 3 * p2 + 7 * p3 + 9 * p4 + 1 * p5 + 3 * p6 + 7 * p7 + 9 * p8 +1 * p9 + 3 * p10 + 1 * p11
- # Data urodzenia
- # ========================================================================
- # Dla osób urodzonych w latach 1900 do 1999 – miesiąc zapisywany jest
- # w sposób naturalny, tzn. dwucyfrowo od 01 do 12
- # dla osób urodzonych w innych latach niż 1900–1999 dodawane są do numeru
- # miesiąca następujące wielkości:
- # dla lat 1800–1899 – 80
- # dla lat 2000–2099 – 20
- # dla lat 2100–2199 – 40
- # dla lat 2200–2299 – 60
- #
- # Przykładowo osoba urodzona 14 lipca 2002 roku ma następujący zapis
- # w numerze ewidencyjnym: 022714
- pesel_month_check = p3 * 10 + p4
- if 81 <= pesel_month_check <= 92:
- pesel_year = 1800 + p1 * 10 + p2
- pesel_month = 80 - p3 * 10 + p4
- elif 21 <= pesel_month_check <= 32:
- pesel_year = 2000 + p1 * 10 + p2
- pesel_month = 20 - p3 * 10 + p4
- elif 41 <= pesel_month_check <= 52:
- pesel_year = 2100 + p1 * 10 + p2
- pesel_month = 40 - p3 * 10 + p4
- elif 61 <= pesel_month_check <= 82:
- pesel_year = 2200 + p1 * 10 + p2
- pesel_month = 60 - p3 * 10 + p4
- else:
- pesel_year = 1900 + p1 * 10 + p2
- pesel_month = p3 * 10 + p4
- pesel_day = p5 * 10 + p6
- pesel_birth = datetime.date(pesel_year, pesel_month, pesel_day)
- now = datetime.date.today()
- delta = now - pesel_birth
- text = "Witaj " + imie + ", Twój PESEL to " + pesel
- if checksum %10 == 0:
- print("PESEL prawidłowy\n")
- if p10 %2 == 0:
- print(text)
- print()
- print("Jesteś kobietą")
- print("Urodziłaś się", pesel_birth, "\n")
- print("Gratulacje, przeżyłaś", delta.days, "dni :)")
- else:
- print(text)
- print()
- print("Jesteś mężczyzną")
- print("Urodziłeś się", pesel_birth, "\n")
- print("Gratulacje, przeżyłeś", delta.days, "dni :)")
- else:
- print("PESEL błędny")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement