Python程序输入奇数时额外打印偶数的问题排查求助
问题分析与解决
问题原因
当输入奇数时程序多打印数字,核心问题是循环逻辑的顺序错误,加上冗余的判断分支混淆了逻辑:
- 原循环条件是
num1 > num2,进入循环后先执行num2 +=2再打印——这意味着当num2是小于num1的最大偶数时(比如输入5时的4),满足循环条件进入循环,加2后变成6(已经大于5),但还是被直接打印出来,导致输出超出范围。 - 代码里的
if num2 % 2 == 0完全多余:因为num2初始为0,每次加2,永远是偶数,else分支永远不会触发,属于无效代码。
举个输入5的执行流程:
- 初始
num1=5,num2=0 - 第一次循环:5>0成立 → num2=2 → 打印2
- 第二次循环:5>2成立 → num2=4 → 打印4
- 第三次循环:5>4成立 → num2=6 → 打印6(此时6已经大于输入的5)
修正方案
方案一:调整循环逻辑顺序
把打印操作放在加2之前,同时修改循环条件为num2 <= num1,确保只打印不超过输入值的偶数:
num1 = int(input("Please enter a number : ")) num2 = 0 while num2 <= num1: print(num2) num2 += 2
方案二:用range简化实现(更简洁直观)
利用Python的range函数直接生成符合要求的偶数序列,避免手动维护循环变量:
num1 = int(input("Please enter a number : ")) for num in range(0, num1 + 1, 2): print(num)
内容的提问来源于stack exchange,提问作者Thorn
相关产品推荐
相关产品推荐

