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

Python while循环意外终止求助:寻找三位数乘积最大回文数

问题原因分析

你的代码陷入了死循环,并非真的终止。问题出在分支逻辑的顺序上:当找到回文数时,程序只会更新ans,但没有推进循环的进度(也就是没有递增y或x),导致后续循环永远停在同一个x=101、y=101的组合上。

具体流程是这样的:

  • 当x=101、y=101时,乘积10201是回文数,程序进入if分支,给ans赋值。
  • 下一次循环时,x和y都没有变化,乘积还是10201,依然满足回文条件,再次进入if分支。
  • 这个过程无限重复,y永远不会递增到102,x也永远不会继续增加,看起来像是程序“终止”,实际是卡在了死循环里。
修复方案

你需要调整分支逻辑,确保不管是否找到回文数,都能推进循环的遍历进度。同时,还要修正ans的更新逻辑,保证只记录最大的回文数(否则后面找到的小回文数会覆盖之前的大值)。

修复后的代码示例:

x = 100
y = 100
ans = 0  # 初始化最大回文数为0

while x != 1000:
    test = x * y
    # 只有当找到更大的回文数时才更新ans
    if str(test)[::-1] == str(test) and test > ans:
        ans = test
    # 不管是否找到回文,都推进循环进度
    if y < 999:  # 注意这里是999,因为y是三位数,最大到999
        y += 1
    else:
        x += 1
        y = 100
        print(x)

print(ans)

另外,如果你想提高效率,可以从大到小遍历x和y(比如从999开始递减),一旦找到回文数,就可以提前终止对应分支的循环,不用遍历所有组合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:47:18