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

Python亚当数判断程序陷入静默死循环,无法定位错误求排查

问题根因

死循环出在reverse()函数的数值更新逻辑:

  • Python3中/运算符默认执行浮点数除法,你写的num/=10不会将num截断为整数,以输入11为例,第一次循环后num变为1.1,第二次变为0.11,第三次变为0.011……永远满足num>0的循环条件,程序会一直卡在while循环中无法退出,这也是你无法断点追踪后续代码的原因。
修复方法

将reverse()函数中的num/=10修改为整数除法num//=10即可,修改后的完整代码如下:

# Find Adam Numbers

def isAdamNumber(candidate):
    isAdam = False
    rev = reverse(candidate)
    square = candidate * candidate
    revsq = rev*rev
    if revsq == reverse(square):
        isAdam = True
    return isAdam
    
def reverse(num):
    rev=0
    while num > 0:
        rev = rev * 10 + num%10
        num //= 10 # 替换为整数除法
    return rev
for x in range (11,25):
    if isAdamNumber(x):
        print(x, " is an adam number\n")
运行输出

修复后程序会输出指定范围内的所有亚当数:

11  is an adam number

12  is an adam number

13  is an adam number

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:45:08