You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python自定义闰年判断函数返回结果异常,求排查原因

闰年判断函数的逻辑错误分析与修正

你的代码核心问题是逻辑嵌套错误,违背了闰年的判定规则,导致普通闰年(比如2024)被错误判定为非闰年。

闰年的正确判定规则

年份需满足以下任意一个条件:

  • 能被4整除,但不能被100整除;
  • 能被400整除。

你的代码问题点

当年份满足year%4==0且year%100!=0时,你额外添加了year%400==0的判断——这完全多余,而且会把像2024这样的普通闰年排除在外(2024能被4整除、不能被100整除,但不能被400整除,所以这一步会强制把leap设为False)。

修正后的代码方案

方案1:简化逻辑(推荐)

直接用逻辑表达式一次性判断,代码更简洁清晰:

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

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

方案2:修正嵌套逻辑

如果想要保留原有嵌套结构,调整判断顺序即可:

def is_leap(year):
    leap = False
    if year % 4 == 0:
        if year % 100 != 0:
            leap = True
        else:
            # 能被100整除时,需进一步判断是否能被400整除
            if year % 400 == 0:
                leap = True
    return leap

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

测试验证

  • 输入2024 → 返回True(正确,普通闰年)
  • 输入2023 → 返回False(正确,非闰年)
  • 输入2000 → 返回True(正确,世纪闰年)
  • 输入1900 → 返回False(正确,非世纪闰年)

内容的提问来源于stack exchange,提问作者Ansu Sinha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 10:25:32