如何让Python使leap yr函数类似于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:

我正在尝试为闰年创建一个函数,然后创建一个生成器,它的功能类似于range(开始、停止、步进)命令。出于某种原因,我下面的代码没有打印所写的年份是否为闰年。当我输入已知的闰年时,我总是出错,我不确定我做错了什么

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