首页 > 解决方案 > 根据以下条件更正我的 Python 闰年代码

问题描述

请更正我的代码。我不是在寻找替代品。请使用上述条件

def is_leap(year):
    nonleap = False
    leap = True
    x = year % 4
    y = year % 100
    z = year % 400
    if(x == 0):
        if((y % 2 != 0) or ((y % 2 == 0) and (z % 2 == 0))):
            return leap
    else:
        return nonleap

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

标签: pythonpython-3.xleap-year

解决方案


您的代码的问题是您正在检查 y 和 z 是否可以被 2 整除。

使用您的代码作为基础的解决方案可能如下所示

def is_leap(year):
    nonleap = False
    leap = True
    x = year % 4
    y = year % 100
    z = year % 400
    if x == 0:
        if (y == 0) and not (z == 0):
            return nonleap
        else:
            return leap
    else:
        return nonleap

但这里有一个更优雅的 Pythonic 解决方案 https://www.hackerrank.com/challenges/write-a-function/forum

def is_leap(year):
    return year % 4 == 0 and (year % 400 == 0 or year % 100 != 0)

推荐阅读