I was doing the following exercise: > Create an algorithm which asks the user a number from 1 to 7, and each number represents a day on the week. For example, 1 represents Sunday, 2 represents Monday and so on. The user will type this number and the program will show them the name of the day on the week and if it's a business day or a weekend. I tried to do it in a object-oriented way and using Python. Can someone please verify if my code is within the Python and object-oriented "standards"? Because I'm not sure whether it is, and I need a review. Here's my code: class DayOnWeek: ERROR_MESSAGE = 'Invalid weekday. Try again:' NUMBER_NAME_ASSOCIATIONS = { 1: 'Sunday', 2: 'Monday', 3: 'Tuesday', 4: 'Wednesday', 5: 'Thursday', 6: 'Friday', 7: 'Saturday' } def __init__(self): self._day_number = 0 self._day_name = None self._category = None @property def day_name(self): return self._day_name @property def category(self): return self._category @property def day_number(self): return self._day_number @day_number.setter def day_number(self, value): if 1 <= value <= 7: self._day_number = value self._day_name = DayOnWeek.NUMBER_NAME_ASSOCIATIONS[self._day_number] else: raise ValueError(DayOnWeek.ERROR_MESSAGE) if 2 <= value <= 6: self._category = 'Business day' else: self._category = 'Weekend' class DayOnWeekInterface: def __init__(self): self._day_on_week = DayOnWeek() def request_day_number(self): while True: try: day_num = input('Type the number of the day on the week (ex: 1 - Sunday):') day_num = int(day_num) self._day_on_week.day_number = day_num break except ValueError: print(DayOnWeek.ERROR_MESSAGE) self.show_day_on_week() def show_day_on_week(self): day_num = self._day_on_week.day_number day_name = self._day_on_week.day_name day_category = self._day_on_week.category print(f'The day {day_num} is {day_name.lower()}') print(f'{day_name} is a {day_category.lower()}') DayOnWeekInterface().request_day_number()