Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Rijksregisternummer:
- def __init__(self, nummer):
- assert isinstance(nummer, str), 'ongeldig type'
- self.nummer1 = ''
- lengte = 0
- for teken in nummer:
- if teken.isdigit():
- self.nummer1 += teken
- lengte += 1
- self.nummer2 = list(self.nummer1)
- if lengte != 1:
- mv = 's'
- else:
- mv = ''
- assert lengte == 11, f'ongeldig formaat ({lengte} cijfer{mv})'
- def __repr__(self):
- return f"Rijksregisternummer('{self.nummer1}')"
- def __str__(self):
- for i in (4, 2, -2):
- self.nummer2.insert(i, '.')
- self.nummer2.insert(8, '-')
- return ''.join(self.nummer2)
- def geslacht(self):
- return 'man' if int(self.nummer1[6: 9]) % 2 else 'vrouw'
- def controlegetal(self, y2k=False):
- n = int('2' + self.nummer1[:-2]) if y2k else int(self.nummer1[:-2])
- return 97 - (n % 97)
- def geboortedatum(self):
- import datetime
- year = f'20{self.nummer1[:2]}' if self.controlegetal(y2k=True) == int(self.nummer1[-2:]) \
- else f'19{self.nummer1[:2]}'
- try:
- datum = datetime.date(int(year), int(self.nummer1[2:4]), int(self.nummer1[4:6]))
- except ValueError:
- datum = False
- assert datum, 'ongeldige geboortedatum'
- return datum
- def geldig(self):
- if not (self.controlegetal() == int(self.nummer1[-2:])
- or self.controlegetal(y2k=True) == int(self.nummer1[-2:])):
- return False
- try:
- self.geboortedatum()
- except AssertionError:
- return False
- return True
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement