我将一个int转换为一个str,但得到“类型为'int'的对象没有len()”的信息

时间:2019-07-23 12:27:39

标签: python string int

该函数应该返回数字的数字总和。

我使用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()

1 个答案:

答案 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])