from datetime import datetime import logging logging.basicConfig(level=logging.DEBUG) input_month = input('Input a month to analyse: ') input_day = int(input('Input a day of that month: ')) def convert_doy_to_season(doy): if not isinstance(doy, int): return 'Invalid' if 79 <= doy <= 171: return 'Spring' if 172 <= doy <= 264: return 'Summer' if 265 <= doy <= 354: return 'Autumn' if 355 <= doy <= 365 or 1 <= doy <= 78: return 'Winter' def convert_month_to_num(month_name): try: _date = datetime.strptime(month_name, "%B") logging.debug(_date.month) return int(_date.month) except ValueError: logging.warning('Was unable to convert from full month name, trying with shortname.') try: _date = datetime.strptime(month_name, "%b") logging.debug(_date.month) return int(_date.month) except ValueError: logging.error('Was unable to convert the month {0}! Tried long name and short name.'.format(month_name)) return None def day_of_year(month,day): try: # Cannot handle leap years!!! if day > 30 or day <= 0: raise OverflowError result = int((275 * month) / 9.0) - 2 * int((month + 9) / 12.0) + day - 30 logging.debug(result) return result except TypeError: return None except OverflowError: return None print(convert_doy_to_season(day_of_year(convert_month_to_num(input_month), input_day)))