我在 py3 中的闰年代码有什么问题?

What is wrong in my leap year code in py3?

问题是这样的:

我们几乎每四年在 2 月 29 日添加一个闰日。闰日是一个额外的或闰日,我们将其添加到一年中最短的月份,即二月。 在公历中,必须考虑三个标准来识别闰年:

能被4整除的年份是闰年,除非: 年份可以被 100 整除,这不是闰年,除非: 年份也能被400整除,那就是闰年。 这意味着在公历中,2000 年和 2400 年是闰年,而 1800 年、1900 年、2100 年、2200 年、2300 年和 2500 年不是闰年。

这是我在 python 3

中编写的代码
def is_leap(year):
leap = False

# Write your logic here
if((year%4==0) |(year%100==0 & year%400==0)):
    leap= True
else:
    leap= False

return leap

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

此代码对于 输入 2100 失败。我无法指出错误。请帮忙

首先,您使用的是按位运算符 |&(您可以在此处阅读 - https://www.educative.io/edpresso/what-are-bitwise-operators-in-python ),但需要使用逻辑运算符,例如orand.

此外,您的代码可以简化:

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

试试这个:

def leap_year(n):
    if (n%100==0 and n%400==0):
        return True
    elif (n%4==0 and n%100!=0):
        return True
    else:
        return False