Python程序运行正常但跳过代码输出行问题原因排查
问题原因
你提到的两行代码永远不会执行,本质是它们属于不可达代码,被放在了对应分支的return语句之后。
Python函数执行逻辑中,只要运行到return语句,就会立刻终止当前函数的全部流程,把return后的值返回给调用方,同一代码块内return之后的所有语句都会被直接跳过,没有任何执行机会。
对照你的collatz函数代码:
- 偶数判断分支的第一行就是
return number // 2,执行完这行函数就直接退出,后面的result = number、print(number)根本不会被运行 - 奇数判断分支逻辑完全一致,第一行
return 3 * number + 1执行完就会退出函数,后续两行代码同样被跳过
你的程序能正常把输入数字按Collatz规则运算到1,是因为return后的计算逻辑本身是正确的,只是你额外加的赋值、打印操作放错了位置,被return语句拦截了。
修正方案
把需要执行的赋值、打印逻辑移动到return语句之前即可,参考修正后的可运行代码:
def collatz(number): result = number print(number) if number % 2 == 0: return number // 2 elif number % 2 == 1: return 3 * number + 1 n = int(input('Enter a number: ')) while n != 1: n = collatz(n) print(1)
另外你原代码中输入获取后没有第一时间转成整数,第一次循环判断时是拿字符串类型的输入值和整数1做比较,虽然不影响最终运行结果,但属于不规范写法,修正时直接在input阶段转成整数即可。
内容的提问来源于stack exchange,提问作者Dibsy
相关产品推荐
相关产品推荐

