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

为何运行此闰年判断代码时部分年份会重复打印‘Leap year’?

问题分析与修复

首先,你的代码存在逻辑错误,导致部分年份会重复打印"Leap year":

  • 当年份能被4整除且能被100整除时,无论它是否能被400整除,内层if-else执行完毕后,都会额外执行一次print("Leap year")。比如:
    • 输入2000:内层if触发打印一次"Leap year",之后又执行额外的print,导致两次输出。
    • 输入1900:内层else打印"Not leap year",之后又打印"Leap year",出现矛盾输出。

关于不同运行环境表现不一致,大概率是部分环境的输入输出缓冲机制差异,但核心问题还是代码逻辑错误。

修复后的代码

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.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 04:12:10