Question #85622

Create a calendar program that allows the user to enter a day, month and year in three separate variables. Then ask the user to select from a menu of choices using this formatting:
Please enter a date
Day:
Month:
Year:
Menu:
1) Calculate the number of days in the given month.
2) Calculate the number of days left in the given year.
It must include the following functions:
leap_year: Takes the year as a parameter and returns a 1 if a year is a leap year (Links to an external site.)Links to an external site.and 0 if it is not. This information will only be used by other functions.
number_of_days: This subprogram will accept the date as parameters and return how many days are in the given month (Links to an external site.)Links to an external site..
days_left: This will accept the date as parameters and then calculate the number of days left in the year. This should not include the date the user entered in the count.

Expert's answer

```
import datetime
# function takes the year as a parameter and returns a 1 if a year is a leap year and 0 if it is not
def leap_year(year):
if year % 4 == 0:
if year % 100 == 0 and year % 400 != 0:
return 0
else:
return 1
else:
return 0
# function accept the date as parameters and return how many days are in the given month
def number_of_days(date):
if date.month in [1, 3, 5, 7, 8, 10, 12]:
return 31
elif date.month in [4, 6, 9, 11]:
return 30
elif date.month == 2:
if leap_year(date.year) == 1:
return 29
else:
return 28
# function accept the date as parameters and calculate the number of days left in the year
def days_left(date):
mon = date.month
days = 0
while mon <= 12:
if mon == date.month:
days = days + number_of_days(datetime.date(date.year, mon, 1)) - date.day
else:
days = days + number_of_days(datetime.date(date.year, mon, 1))
# next month
mon += 1
return days
# ask the user to enter a day, month and year
print('Please enter a date')
day = int(input('Day:'))
mon = int(input('Month:'))
year = int(input('Year:'))
# create data variable
date = datetime.date(year, mon, day)
choise = '0'
while choise != '3':
while True:
# display menu
print('Menu:')
print('1) Calculate the number of days in the given month.')
print('2) Calculate the number of days left in the given year.')
print('3) Exit.')
# get the user choise
choise = input('>')
if choise == '1':
print('Number of days in the given month is', number_of_days(date))
elif choise == '2':
print('Number of days left in the given year is', days_left(date))
elif choise == '3':
break;
else:
print('Invalid input')
```

## Comments

## Leave a comment