Hackerrank 编写闰年函数

问题描述 投票:0回答:1

我很抱歉,这个问题可能已经被问过一百万次了,但是每个解决方案都是独特的,因此都是唯一错误的!

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

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

它通过了所有测试。 2100除外。

它通过了测试用例 0 到 5,除了 1. 1 是 2100。

python-3.x
1个回答
0
投票

逻辑是:

evenly divided by 100? ———(no)——— evenly divisible by 4?  
     |                                     |  
   (yes)                                 (yes)  
     |                                     |  
evenly divided by 400?                    Leap  
     |  
   (yes)  
     |  
    Leap

所以代码应该是:

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

year = int(input())
print(is_leap(year))
© www.soinside.com 2019 - 2024. All rights reserved.