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

Python闰年判断程序问题排查:我的代码是否存在漏洞?

你的闰年判断代码问题分析

首先明确闰年的标准规则:

  • 能被4整除,但不能被100整除 → 是闰年
  • 能被400整除 → 是闰年
    满足以上任意一个条件的年份即为闰年。

你的代码存在的问题

你的代码虽然在多数常见测试用例下能得到正确结果,但写法极不规范,逻辑表达晦涩难懂:

if year % 4 == 0 and (year % 100 == 0 and year % 400) == 0:

核心问题出在(year % 100 == 0 and year % 400) == 0这部分:

  1. 你没有显式写出year % 400 == 0,而是直接用余数结果参与运算。这依赖Python中“0等价于False、非零整数等价于True”的隐式特性,可读性极差,其他人很难一眼理解你的逻辑意图。
  2. 整个条件的逻辑绕了不必要的弯,虽然结果巧合符合规则,但这种写法非常容易在后续修改时出错,完全不符合代码可读性的基本要求。

正确的写法

把逻辑拆解开,用直白的方式表达闰年规则,可读性和可维护性都会大幅提升:

year = int(input())

if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
    print(f"{year} is a leap year.")
else:
    print(f"{year} is not a leap year.")

关键测试用例验证

  • 2004(能被4整除,不能被100整除)→ 输出闰年,正确
  • 1900(能被4和100整除,但不能被400整除)→ 输出非闰年,正确
  • 2000(能被400整除)→ 输出闰年,正确
  • 2023(不能被4整除)→ 输出非闰年,正确

内容的提问来源于stack exchange,提问作者Sanchit Saxena

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:07:28