NEW NIC ALGORITHM [PYTHON]

MihiCherub

Well-known member
  • Sep 14, 2009
    14,799
    2
    3,219
    113
    Gampaha
    අලුත් NIC එකට පොඩි කෝඩ් කෑල්ල්ක් ලිව්ව. ඕනෙ විදියට වෙනස් කරගෙන පොඩ්ඩක් ටෙස්ට් කොරල බලල කියන්න හරිද කියල. ඕනෙ ප්‍රොජෙක්ට් වලට ගෙඩිය පිටින්ම උස්සල පාවිච්චි කරන්න. වැරදි අඩුපාඩු සහිත නම් දැනුවත් කරන්න. input nic number validation එකක් කරල නෑ.

    Python:
    from datetime import datetime, timedelta
    
    
    class NicDetails:
    
        def __init__(self, nic_number: str):
    
            self.birthday = None
            self.gender: str = ""
            self.age: int = 0
    
            self.__set_details(nic_number)
    
        def __set_details(self, nic_number):
    
            if len(nic_number) == 10:  # OLD NIC Including 'v' or 'x'
                year = int("19" + nic_number[:2])
                days = int(nic_number[2:5])
    
            else:  # New NIC After 2000
                year = int(nic_number[:4])
                days = int(nic_number[4:7])
    
            self.birthday = datetime(year, 1, 1) + timedelta(days - 2)  # All the years are leap years, NIC coding
    
            if days > 500:
                self.gender = "Female"
                days -= 500
            else:
                self.gender = "Male"
    
            today = datetime.today()
            self.age = today.year - self.birthday.year - (
                    (today.month, today.day) < (self.birthday.month, self.birthday.day))

    usage
    Python:
    nic = NicDetails("952453462v")
    print(nic.birthday)
    print(nic.gender)
    print(nic.age)