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

