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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.17 16:16:01