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

已将整数转为字符串仍触发len()类型错误,求代码问题定位

问题分析与修复方案

问题出在哪?

嘿,我一眼就揪出问题啦!第一次循环时,x确实是字符串类型(通过str(n)转换而来),所以len(x)能正常运行。但当你执行x=mult这一步时,mult是你把每个数字相乘得到的整数,这时候x直接从字符串变成了整数!下一次循环再调用len(x),自然就会报错——整数哪有长度属性嘛😅。

修复方法

解决起来超简单:每次计算完乘积后,记得把mult再转回字符串赋值给x,也就是把x=mult改成x=str(mult)。这样每次循环时x都会保持字符串类型,len(x)就能正常工作了。

修正后的完整代码

n=39
x=str(n)
counter=0
mult=1
while len(x) != 1:
    for i in x:
        mult = mult * int(i)
    x=str(mult)  # 关键修改:将整数转回字符串
    mult=1
    counter+=1
print(counter)  # 可以打印结果验证,这个例子会输出3

逻辑验证(以n=39为例)

  1. 第一次循环:x是"39",3*9=27,x转为"27",counter=1
  2. 第二次循环:2*7=14,x转为"14",counter=2
  3. 第三次循环:1*4=4,x转为"4",len(x)=1,循环结束,counter=3,完全符合预期!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:03:09