已将整数转为字符串仍触发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为例)
- 第一次循环:x是"39",3*9=27,x转为"27",counter=1
- 第二次循环:2*7=14,x转为"14",counter=2
- 第三次循环:1*4=4,x转为"4",len(x)=1,循环结束,counter=3,完全符合预期!
内容的提问来源于stack exchange,提问作者Abdallah Ahmed
相关产品推荐
相关产品推荐

