【问题标题】:How to get Python to make leap yr function similar to range (start, stop, step)?如何让 Python 使闰年函数类似于范围(开始、停止、步进)?
【发布时间】:2020-12-10 05:52:52
【问题描述】:

我正在尝试为闰年创建一个函数,然后创建一个生成器,其功能类似于 range(start, stop, step) 命令。出于某种原因,我下面的代码没有打印书面年份是否是闰年。当我输入已知的闰年时,我总是得到 False 并且我不确定我做错了什么。

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

标签: python python-3.x range generator


【解决方案1】:

您需要返回leap。您正在设置变量,但随后忽略它。

另外,您的测试顺序错误。如果年份能被 100 整除,那么它也能被 4 整除,所以第一个 if Y % 4 == 0: 条件为真。 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):

【讨论】:

    猜你喜欢
    • 2016-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    • 2022-10-20
    • 1970-01-01
    • 2021-04-22
    • 1970-01-01
    相关资源
    最近更新 更多