为什么这段Python代码会多次打印输出?如何调整为仅输出一次
问题原因
- 所有打印、计算逻辑都写在了遍历
numList的循环内部,每识别到一个奇数就会触发一次逻辑执行,自然会出现重复输出的问题 - 原逻辑判断倒置:奇数数量不足5个时反而打印“列表中奇数超过5个”的错误提示
- 奇数数量≥5后,每新增一个奇数就会重新遍历已收集的奇数列表求和,额外增加了不必要的嵌套循环,时间复杂度升高
修正后代码
numList = [422, 136, 524, 85, 96, 719, 85, 92, 10, 17, 312, 542, 87, 23, 86, 191, 116, 35, 173, 45, 149, 59, 84, 69, 113, 166] odd_count = 0 odd_total = 0 # 仅遍历一次原列表完成所有统计 for num in numList: if num % 2 != 0: odd_count += 1 odd_total += num # 所有逻辑判断、打印均在遍历结束后执行,仅输出一次结果 if odd_count >= 5: print("Sum of all odd numbers is {}!".format(odd_total)) else: print("There are less than 5 odd numbers in this list")
核心优化点
- 取消冗余的奇数列表存储和嵌套求和循环,遍历过程中直接统计奇数数量和总和,全程仅迭代一次
- 所有输出逻辑移到循环外,保证只打印一次结果
- 修正了原代码的逻辑倒置问题,输出和实际统计结果对齐
内容的提问来源于stack exchange,提问作者Oliver Pomaranski
相关产品推荐
相关产品推荐

