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

Python使用while循环与if语句迭代时异常输出问题求解

问题原因

  • 核心错误是while循环的终止条件逻辑不符合需求:你设置的(x // 2) != 1判定规则,会在当前值除以2的整数商为1时直接终止迭代,而考拉兹序列要求迭代到当前值为1时才停止。
  • 以初始值3为例:x=3时3//2=1,直接不进入循环,最后只追加3//2=1,就得到了错误结果[3,1]。初始值6迭代到x=3时也会触发相同的终止逻辑,得到[6,3,1]。
  • 额外的冗余逻辑:循环结束后追加x//2的操作也不符合规则,正确逻辑下迭代到x=1时就可以终止,不需要额外计算商。

修正后代码

import pandas as pd
d ={}
for i in range(1,10):
    x = i
    l = [x]
    # 终止条件改为当前值不等于1
    while x != 1:
        if x % 2 == 0:
            x = x // 2
        else:
            x = 3 * x + 1
        l.append(x)
    d[i] = l
df = pd.DataFrame(dict([(k,pd.Series(v)) for k,v in d.items()]))

验证结果

运行修正后代码,3的输出为[3, 10, 5, 16, 8, 4, 2, 1],6的输出为[6, 3, 10, 5, 16, 8, 4, 2, 1],完全符合预期。

内容的提问来源于stack exchange,提问作者Srinivas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:36:03