fork download
  1. # ------------------------------------------------------------------------
  2. # Assignment: South African ID Decoder
  3. # Student Number: 216009949
  4. # ID Number Used: 9209225604088
  5. # ------------------------------------------------------------------------
  6.  
  7. from datetime import date
  8.  
  9. # -------- Function to decode South African ID ----------------
  10. def decode_sa_id(id_number):
  11. """
  12. Decodes SA ID into:
  13. - Date of Birth
  14. - Age
  15. - Gender
  16. - Citizenship
  17. """
  18. year = int(id_number[0:2])
  19. month = int(id_number[2:4])
  20. day = int(id_number[4:6])
  21.  
  22. # Convert to full year (1992 because 92 >= 50? No, here it's 1992)
  23. year += 1900 if year >= 50 else 2000
  24.  
  25. # Date of birth
  26. dob = date(year, month, day)
  27.  
  28. # Age calculation
  29. today = date.today()
  30. age = today.year - dob.year - ((today.month, today.day) < (dob.month, dob.day))
  31.  
  32. # Gender check
  33. gender_code = int(id_number[6:10])
  34. gender = "Male" if gender_code >= 5000 else "Female"
  35.  
  36. # Citizenship check
  37. citizenship = "SA Citizen" if id_number[10] == "0" else "Permanent Resident"
  38.  
  39. # Display results
  40. print("===== SOUTH AFRICAN ID DETAILS =====")
  41. print(f"ID Number: {id_number}")
  42. print(f"Date of Birth: {dob.strftime('%d %B %Y')}")
  43. print(f"Age: {age}")
  44. print(f"Gender: {gender}")
  45. print(f"Citizenship: {citizenship}")
  46.  
  47.  
  48. # -------- MAIN PROGRAM ----------------
  49. def main():
  50. id_number = "9209225604088" # Your given ID
  51. decode_sa_id(id_number)
  52.  
  53.  
  54. # Run program
  55. if __name__ == "__main__":
  56. main()
  57.  
Success #stdin #stdout 0.08s 14100KB
stdin
Standard input is empty
stdout
===== SOUTH AFRICAN ID DETAILS =====
ID Number: 9209225604088
Date of Birth: 22 September 1992
Age: 32
Gender: Male
Citizenship: SA Citizen