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

Python闰年检测代码对比:自写实现是否可行?哪种写法更规范?

关于闰年检测代码的可行性与规范分析

你的代码基本能处理大部分常规年份,但存在逻辑漏洞,下面具体分析问题,并对比讲师的写法:

1. 你的代码存在的核心问题

  • 遗漏特殊闰年判断:当输入能被400整除的年份(如2000年)时,你的三个条件都不满足,程序不会输出任何结果,这是严重的逻辑缺失。
  • 冗余判断:第一个条件里的year % 400 != 0完全多余——能被400整除的年份必然能被100整除,而该条件同时要求year % 100 != 0,两者矛盾,这个判断毫无意义。

2. 你的写法是否可行?

修正漏洞后是可行的,但逻辑不够直观。比如补全边界情况后,你可以调整成更清晰的扁平判断:

year = int(input("Which year do you want to check? ")) 

if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
    print("Leap year.")
else:
    print("Not leap year.")

这种写法直接对应闰年的数学规则,简洁且无遗漏。

3. 讲师的写法是否更简洁规范?

讲师的嵌套if写法更贴合闰年规则的逻辑层级,可读性更强:

  • 闰年的判断逻辑本身就是层层筛选:先排除不能被4整除的年份;能被4整除的,再排除能被100但不能被400整除的年份。嵌套结构完美匹配这个递进逻辑,新手能轻松看懂每一步的筛选目的。
  • 代码没有冗余判断,每个分支都对应明确的规则,不容易遗漏像1900、2000这类特殊年份,后期维护也更方便。

总结:你的思路方向是对的,但需要补全边界情况;讲师的写法逻辑更清晰,更符合代码可读性规范,也更不容易出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 20:27:26