How do I solve this leap year function problem for zybooks

Viewed 27

A common year in the modern Gregorian Calendar consists of 365 days. In reality, Earth takes longer to rotate around the sun. To account for the difference in time, every 4 years, a leap year takes place. A leap year is when a year has 366 days: An extra day, February 29th. The requirements for a given year to be a leap year are:

  1. The year must be divisible by 4

  2. If the year is a century year (1700, 1800, etc.), the year must be evenly divisible by 400

Some example leap years are 1600, 1712, and 2016.

Write a program that takes in a year and determines the number of days in February for that year.

Ex: If the input is:

1712 the output is:

1712 has 29 days in February. Ex: If the input is:

1913 the output is:

1913 has 28 days in February. Your program must define and call the following function. The function should return the number of days in February for the input year. def days_in_feb(user_year)

This is what I have so far.

def days_in_feb(user_year):
    leap = year % 4 == 0 and (year % 400 == 0 or year % 100 != 0)
    return leap
    
if __name__ == '__main__':
    year = int(input())
    if days_in_feb(year): 
        call() and colon: 
        print(year,"has 29 days in February.")
    else:
        print(year,"has 28 days in February .")

I get partial credit (2/10) but im struggling to figure out the other portion of the answer. This is what i get

1: Compare output
2 / 2
Input
1712
Your output
1712 has 29 days in February.

2: Unit test
0 / 2
days_in_feb(1913)
NameError: name 'year' is not defined

3: Unit test
0 / 3
days_in_feb(1600)
NameError: name 'year' is not defined

4: Unit test
0 / 3
days_in_feb(1900)
NameError: name 'year' is not defined
1 Answers

Your variable name is different in function argument (user_year) and usage (year). Change it to this way:

def days_in_feb(year):
    leap = year % 4 == 0 and (year % 400 == 0 or year % 100 != 0)
    return leap
    
if __name__ == '__main__':
    year = int(input())
    if days_in_feb(year): 
        call() and colon: 
        print(year,"has 29 days in February.")
    else:
        print(year,"has 28 days in February .")
Related