ブリブリ備忘録 おっ、python

HackerRankの問題とコメント(python3) 拙いですが...

Write a function 関数の定義

・問題

We add a Leap Day on February 29, almost every four years. The leap day is an extra, or intercalary day and we add it to the shortest month of the year, February. 
In the Gregorian calendar three criteria must be taken into account 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 
You are given the year, and you have to write a function to check if the year is leap or not.

Note that you have to complete the function and remaining code is given as template.

Input Format

Read y, the year that needs to be checked.

Constraints

 

Output Format

Output is taken care of by the template. Your function must return a boolean value (True/False)

Sample Input 0

1990

Sample Output 0

False

Explanation 0

1990 is not a multiple of 4 hence it's not a leap year.

ソースコード

def is_leap(year):
    if (year)%4!=0:
        leap = False
        return leap
    elif (year)%4==0 and (year)%100==0 and (year)%400!=0:
        leap = False
        return leap
    else:
        leap = True
        return leap

year = int(input())
print(is_leap(year))

・コメント

うるう年の問題。西暦を入力して、その年がうるう年かどうかを判断する関数を定義する問題。

4年に一回だと思いがちだが、100で割り切れるが、400で割り切れない年はうるう年ではないという分かりにくいルールを関数に落とすことさえできれば、解ける問題。

まず、4で割り切れない年は間違いなくうるう年ではないのでFalseを出力。

4で割り切れたものの中から、100で割り切れ、400で割り切れないものもFalseを出力し、それ以外の場合のみTrueを出力する。

・URL

https://www.hackerrank.com/challenges/write-a-function/problem