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
相关产品推荐
相关产品推荐

