def parse_input(): """ function to parse input for weekday and leap year boolean """ days_mapping = { "sunday": 0, "monday": -1, "tuesday": -2, "wednesday": -3, "thursday": -4, "friday": -5, "saturday": -6 } day = 0 leap_day = False correct_day_input = False while not correct_day_input: weekday = input("INSERT THE STARTING DAY OF THE WEEK OF THE YEAR:") for day_k in days_mapping.keys(): if weekday.lower() in day_k: day = days_mapping[day_k] correct_day_input = True break while True: leap = input("IS IT A LEAP YEAR?:") if 'y' in leap.lower(): leap_day = True break if 'n' in leap.lower(): leap_day = False break return day, leap_day def calendar(weekday, leap_year): """ function to print a year's calendar. input: _weekday_: int - the initial day of the week (0=SUN, -1=MON, -2=TUES...) _leap_year_: bool - indicates if the year is a leap year """ months_days = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] days = 'S M T W T F S\n' sep = "*" * 59 years_day = 365 d = weekday if leap_year: months_days[2] = 29 years_day = 366 months_names = [" JANUARY ", " FEBRUARY", " MARCH ", " APRIL ", " MAY ", " JUNE ", " JULY ", " AUGUST ", "SEPTEMBER", " OCTOBER ", " NOVEMBER", " DECEMBER"] days_count = 0 # S in the original program # main loop for n in range(1, 13): days_count += months_days[n-1] print("** {} ****************** {} ****************** {} **\n".format(days_count, months_names[n-1], years_day-days_count)) print(days) print(sep) for w in range(1, 7): print("\n") for g in range(1, 8): d += 1 d2 = d - days_count if d2 > months_days[n]: break if d2 <= 0: print("{}".format(' '), end=' ') elif d2 < 10: print(" {}".format(d2), end=' ') else: print("{}".format(d2), end=' ') print() if d2 >= months_days[n]: break if d2 > months_days[n]: d -= g print("\n") print("\n") def main(): print(" "*32 + "CALENDAR") print(" "*15 + "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY") print("\n"*11) day, leap_year = parse_input() calendar(day, leap_year) if __name__ == "__main__": main()