Issue
I am sorry to say that I start to practice for solving Python Programming in HackerRank but I faced a problem which is know as test case error.Need help for resolving my current problems.
below the problem explanation in HackerRank,
An extra day is added to the calendar almost every four years as February 29, and the day is called a leap day. It corrects the calendar for the fact that our planet takes approximately 365.25 days to orbit the sun. A leap year contains a leap day.
In the Gregorian calendar, three conditions are used to identify leap years:
The year can be evenly divided by 4, is a leap year, unless:
The year can be evenly divided by 100, it is NOT a leap year, unless:
The year is also evenly divisible by 400. Then it is a leap year.
This means that in the Gregorian calendar, the years 2000 and 2400 are leap years, while 1800, 1900, 2100, 2200, 2300 and 2500 are NOT leap years. Source
Task
Given a year, determine whether it is a leap year. If it is a leap year, return the Boolean True, otherwise return False.
Note that the code stub provided reads from STDIN and passes arguments to the is_leap function. It is only necessary to complete the is_leap function.
Input Format
Read year, the year to test.
Constraints
1900<=year<=10**5
Output Format
The function must return a Boolean value (True/False). Output is handled by the provided code stub.
Sample Input 0
1990
Sample Output 0
False
Explanation 0
1990 is not a multiple of 4 hence it’s not a leap year.
Below The code which I submitted:
def is_leap(year):
leap = False
if year%4==0:
if year%100==0:
if year%400==0:
return True
else:
return False
else:
return False
else:
return False
return leap
year = int(input())
Note: after submission it show the Test case Failed
Solution
I think you had some trouble understanding the question. The conditions for a year to be a leap year is:
- it should be divisible by 4 but not by 100
OR - it should be divisible by 400.
This means that:
- 400 -> leap year.
- 100 -> divisible by 4 but still not a leap year because it is divisible by 100.
- 4 -> leap year.
So basically, we have to check if a year is divisible by 4 but not by 100, OR if it is simply divisible by by 400.
The Python code for this will be:
def is_leap(year):
if year%4==0 and year%100!=0:
return True
if year%400==0:
return True
return False
You don’t need too many return statements because if the first condition was true, it would never go to the next statement. If the code returns True at any point in this function then it would never reach False. The only way the control would go to return False
is if none of the conditions held True.
Answered By – Soumya Mukhija
Answer Checked By – Senaida (BugsFixing Volunteer)