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

Python代码中print语句重复执行 如何修改为仅执行一次

问题原因

当前代码的打印逻辑写在for循环内部的条件分支中,每遍历一个余数候选值就会触发一次分支判断:只要没匹配到符合条件的余数,就会执行else下的打印语句。以你传入的测试值1395为例,原代码运行时会先遍历余数1、5,两次匹配失败输出两次leap year declined.,匹配到余数9时再输出一次leap year confirmed.,总共触发3次print,不符合单次输出的预期。

修复方案

把打印逻辑移到循环外部:遍历过程中只做闰年判断、用变量存储判断结果,等整个遍历流程结束后,再根据结果执行一次打印即可。修正后的可运行代码如下:

class LunarYear:
    def leap_year(self):
        is_leap = False
        # 农历闰年对应模33的余数候选列表
        leap_remainders = [1, 5, 9, 13, 17, 22, 26, 30]
        for remaining in leap_remainders:
            if self % 33 == remaining:
                is_leap = True
                break
        # 循环结束后仅执行一次打印
        print("leap year confirmed." if is_leap else "leap year declined.")


LunarYear.leap_year(self=1395)
实现说明
  • 初始化布尔标记is_leap为False,默认传入的年份不是农历闰年
  • 遍历余数列表时,只要匹配到符合条件的余数,就把标记改为True并直接终止循环,减少无意义的遍历
  • 整个循环执行完成后,通过三元判断只触发一次print,完全避免多次输出的问题
  • 测试传入值1395时,计算得1395 % 33 = 9,匹配余数列表中的有效值,最终只会输出一次leap year confirmed.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 09:15:34