该函数应该返回数字的数字总和。
我使用new = str(x)
def digital_root(x):
sum=0
new = str(x)
while len(new) > 2:
for i in new:
sum = sum + int(i)
new = sum
if len(str(new))==2:
return int(new[0])+int(new[1])
以digital_root(65536)
。但它返回:
TypeError:类型为'int'的对象没有len()
答案 0 :(得分:1)
是的,您转换了变量,所以当您第一次进入while
循环时,它是一个字符串。
但是,在循环内您执行new = sum
,其中sum
的类型为int
。因此循环的第二次检查由于object of type 'int' has no len()
而中断。
您想要的是:
def digital_root(x):
sum=0
new = str(x)
while len(new) > 2:
for i in new:
sum = sum + int(i)
new = str(sum) # make sure each time you leave, your type is str
if len(new)==2: # here you don't have to make it a string anymore
return int(new[0])+int(new[1])