为何运行此闰年判断代码时部分年份会重复打印‘Leap year’?
问题分析与修复
首先,你的代码存在逻辑错误,导致部分年份会重复打印"Leap year":
- 当年份能被4整除且能被100整除时,无论它是否能被400整除,内层
if-else执行完毕后,都会额外执行一次print("Leap year")。比如:- 输入2000:内层
if触发打印一次"Leap year",之后又执行额外的print,导致两次输出。 - 输入1900:内层
else打印"Not leap year",之后又打印"Leap year",出现矛盾输出。
- 输入2000:内层
关于不同运行环境表现不一致,大概率是部分环境的输入输出缓冲机制差异,但核心问题还是代码逻辑错误。
修复后的代码
year = int(input("Which year do you want to check? ")) if year % 4 == 0: if year % 100 == 0: if year % 400 == 0: print("Leap year") else: print("Not leap year") else: print("Leap year") else: print("Not leap year")
逻辑说明
闰年判断规则是:
- 能被4整除但不能被100整除 → 闰年
- 能被400整除 → 闰年
- 其他情况 → 非闰年
修复时移除了内层if-else之后多余的print("Leap year"),并修正了中间分支的输出(原分支中能被4整除但不能被100整除时错误输出了"Not leap year")。
内容的提问来源于stack exchange,提问作者Daniel S.
相关产品推荐
相关产品推荐

