如何让Python使leap yr函数类似于range(开始、停止、步骤)?
我正在尝试为闰年创建一个函数,然后创建一个生成器,它的功能类似于range(开始、停止、步进)命令。出于某种原因,我下面的代码没有打印所写的年份是否为闰年。当我输入已知的闰年时,我总是出错,我不确定我做错了什么如何让Python使leap yr函数类似于range(开始、停止、步骤)?,python,python-3.x,range,generator,Python,Python 3.x,Range,Generator,我正在尝试为闰年创建一个函数,然后创建一个生成器,它的功能类似于range(开始、停止、步进)命令。出于某种原因,我下面的代码没有打印所写的年份是否为闰年。当我输入已知的闰年时,我总是出错,我不确定我做错了什么 def is_leap(Y): leap=False if Y % 4 == 0: leap=True elif Y % 100 == 0: leap=False elif Y % 400 == 0:
def is_leap(Y):
leap=False
if Y % 4 == 0:
leap=True
elif Y % 100 == 0:
leap=False
elif Y % 400 == 0:
leap=True
return Y % 400 == 0
return Y % 4 == 0
print(is_leap(2004))
您需要返回
leap
。您正在设置变量,但随后忽略了它
此外,您的测试顺序错误。如果年份可以被100整除,那么它也可以被4整除,因此如果Y%4==0,则第一个条件将为true<代码>elif
条件仅在之前的所有条件都为假时进行测试,因此它永远不会执行这些测试
您实际上不需要leap
变量。只需在if
语句中返回即可
def is_leap(Y):
if Y % 400 == 0:
return True
if Y % 100 == 0:
return False
if Y % 4 == 0:
return True
return False
在这种情况下,您不需要elif
,因为return
可以防止陷入下一个if
您还可以组合所有条件:
def is_leap(Y):
return Y % 400 == 0 or (Y % 4 == 0 and Y % 100 != 0):
您没有返回
leap
。