我在 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 ),但需要使用逻辑运算符,例如or和and.
此外,您的代码可以简化:
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
问题是这样的:
我们几乎每四年在 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 ),但需要使用逻辑运算符,例如or和and.
此外,您的代码可以简化:
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