Advertisement
Zoltar358

ProjectPESEL python3.6

Feb 4th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.17 KB | None | 0 0
  1. #!/usr/bin/env python3.6
  2. # coding=utf-8
  3. import datetime
  4.  
  5. __author__     = "Dariusz Dębicki"
  6. __copyright__  = "Copyright 2018, Dariusz Dębicki"
  7. __license__    = "GPL"
  8. __version__    = "1.0"
  9. __email__      = "dariusz.debicki@protonmail.com"
  10.  
  11. # Project PESEL, Python 3.6
  12. # Na podstawie numeru pesel określa płeć, wiek oraz podaje ilość przeżytych dni.
  13.  
  14. imie = str(input("Podaj swoje imię: "))
  15. pesel = str(input("Podaj swój PESEL: "))
  16.  
  17. # Sprawdzanie poprawności numeru PESEL
  18. # ========================================================================
  19. # Poniższa metoda sprowadza się do obliczenia sumy:
  20. # 1×a + 3×b + 7×c + 9×d + 1×e + 3×f + 7×g + 9×h + 1×i + 3×j + 1×k
  21. # (gdzie litery oznaczają kolejne cyfry numeru), a następnie sprawdzenia
  22. # czy reszta z dzielenia przez 10 jest zerem. Innymi słowy, jeśli ostatnia
  23. # cyfra otrzymanej sumy jest zerem, to numer PESEL jest poprawny,
  24. # w przeciwnym razie numer jest błędny.
  25.  
  26. # Convert string pesel to table integer:
  27. p1 = int(pesel[0])
  28. p2 = int(pesel[1])
  29. p3 = int(pesel[2])
  30. p4 = int(pesel[3])
  31. p5 = int(pesel[4])
  32. p6 = int(pesel[5])
  33. p7 = int(pesel[6])
  34. p8 = int(pesel[7])
  35. p9 = int(pesel[8])
  36. p10 = int(pesel[9])
  37. p11 = int(pesel[10])
  38.  
  39. # Calculate checksum
  40. checksum = 1 * p1 + 3 * p2 + 7 * p3 + 9 * p4 + 1 * p5 + 3 * p6 + 7 * p7 + 9 * p8 +1 * p9 + 3 * p10 + 1 * p11
  41.  
  42. # Data urodzenia
  43. # ========================================================================
  44. # Dla osób urodzonych w latach 1900 do 1999 – miesiąc zapisywany jest
  45. # w sposób naturalny, tzn. dwucyfrowo od 01 do 12
  46. # dla osób urodzonych w innych latach niż 1900–1999 dodawane są do numeru
  47. # miesiąca następujące wielkości:
  48. # dla lat 1800–1899 – 80
  49. # dla lat 2000–2099 – 20
  50. # dla lat 2100–2199 – 40
  51. # dla lat 2200–2299 – 60
  52. #
  53. # Przykładowo osoba urodzona 14 lipca 2002 roku ma następujący zapis
  54. # w numerze ewidencyjnym: 022714
  55.  
  56. pesel_month_check = p3 * 10 + p4
  57.  
  58. if 81 <= pesel_month_check <= 92:
  59.     pesel_year = 1800 + p1 * 10 + p2
  60.     pesel_month = 80 - p3 * 10 + p4
  61. elif 21 <= pesel_month_check <= 32:
  62.     pesel_year = 2000 + p1 * 10 + p2
  63.     pesel_month = 20 - p3 * 10 + p4
  64. elif 41 <= pesel_month_check <= 52:
  65.     pesel_year = 2100 + p1 * 10 + p2
  66.     pesel_month = 40 - p3 * 10 + p4
  67. elif 61 <= pesel_month_check <= 82:
  68.     pesel_year = 2200 + p1 * 10 + p2
  69.     pesel_month = 60 - p3 * 10 + p4
  70. else:
  71.     pesel_year = 1900 + p1 * 10 + p2
  72.     pesel_month = p3 * 10 + p4
  73.  
  74. pesel_day =  p5 * 10 + p6
  75.  
  76. pesel_birth = datetime.date(pesel_year, pesel_month, pesel_day)
  77. now = datetime.date.today()
  78. delta = now - pesel_birth
  79.  
  80. text = "Witaj " + imie + ", Twój PESEL to " + pesel
  81.  
  82. if checksum %10 == 0:
  83.     print("PESEL prawidłowy\n")
  84.     if p10 %2 == 0:
  85.         print(text)
  86.         print()
  87.         print("Jesteś kobietą")
  88.         print("Urodziłaś się", pesel_birth, "\n")
  89.         print("Gratulacje, przeżyłaś", delta.days, "dni :)")
  90.     else:
  91.         print(text)
  92.         print()        
  93.         print("Jesteś mężczyzną")
  94.         print("Urodziłeś się", pesel_birth, "\n")
  95.         print("Gratulacje, przeżyłeś", delta.days, "dni :)")        
  96. else:
  97.     print("PESEL błędny")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement