Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Human:
- def __init__(self, first_name, last_name):
- self.first_name = first_name
- self.last_name = last_name
- @property
- def first_name(self):
- return self._first_name
- @property
- def last_name(self):
- return self._last_name
- @first_name.setter
- def first_name(self, first_name):
- first_letter = first_name[0]
- if ord(first_letter) not in range(65,90):
- raise Exception("Expected upper case letter! Argument: firstName")
- if len(first_name) < 4:
- raise Exception("Expected length at least 4 symbols! Argument: firstName")
- else:
- self._first_name = first_name
- @last_name.setter
- def last_name(self, last_name):
- first_letter = last_name[0]
- if ord(first_letter) not in range(65, 90):
- raise Exception("Expected upper case letter! Argument: lastName")
- if len(last_name) < 3:
- raise Exception("Expected length at least 3 symbols! Argument: lastName ")
- else:
- self._last_name = last_name
- class Student(Human):
- def __init__(self, first_name, last_name, fac_number: str):
- Human.__init__(self, first_name, last_name)
- self.fac_number = fac_number
- @property
- def fac_number(self):
- return self._fac_number
- @fac_number.setter
- def fac_number(self, fac_number):
- if len(fac_number) not in range(5,10) or not fac_number.isalnum():
- raise Exception("Invalid faculty number!")
- else:
- self._fac_number = fac_number
- def __str__(self):
- return f"First Name: {self.first_name}\nLast Name: {self.last_name}\nFaculty number: {self.fac_number}"
- class Worker(Human):
- def __init__(self, first_name, last_name, week_salary : float, works_hours :float):
- Human.__init__(self, first_name, last_name)
- self.week_salary = week_salary
- self.works_hours = works_hours
- def __str__(self):
- return f"First Name: {self.first_name}\nLast Name: {self.last_name}\nWeek Salary: {self.week_salary:.2f}\nHours per day: {self.works_hours:.2f}\nSalary per hour: {((self.week_salary / 5)/self.works_hours):.2f}"
- @property
- def week_salary(self):
- return self._week_salary
- @property
- def works_hours(self):
- return self._works_hours
- @week_salary.setter
- def week_salary(self, week_salary):
- if week_salary < 10:
- raise Exception("Expected value mismatch! Argument: weekSalary")
- else:
- self._week_salary = week_salary
- @works_hours.setter
- def works_hours(self, works_hours):
- if works_hours < 1 or works_hours > 12:
- raise Exception("Expected value mismatch! Argument: workHoursPerDay")
- else:
- self._works_hours = works_hours
- command = input().split()
- command_len = len(command)
- second_command = input().split()
- second_command_len = len(second_command)
- try:
- if command_len == 3:
- first_name = command[0]
- last_name = command[1]
- fac_num = command[2]
- person = Student(first_name, last_name, fac_num)
- else:
- first_name = command[0]
- last_name = command[1]
- week_salary = float(command[2])
- works_hours = float(command[3])
- person = Worker(first_name, last_name, week_salary, works_hours)
- if second_command_len == 3:
- first_name = second_command[0]
- last_name = second_command[1]
- fac_num = second_command[2]
- person2 = Student(first_name, last_name, fac_num)
- else:
- first_name = second_command[0]
- last_name = second_command[1]
- week_salary = float(second_command[2])
- works_hours = float(second_command[3])
- person2 = Worker(first_name, last_name, week_salary, works_hours)
- print(person)
- print()
- print(person2)
- except Exception as e:
- print(str(e))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement