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

