错误“基数为10的int()的文字无效:'['”

时间:2013-11-18 21:18:30

标签: python python-2.7

我试图通过循环找到数字的数字和 我创建了一个辅助函数,使数字成为一个列表。 但是,我一直在问invalid literal for int() with base 10: '['

def digital_helper(num):
    a = num
    b = str(a)
    list1 = []
    for digits in b:
        list1.append(int(digits))
    return list1

def digital_sum(num):
    while len(digital_helper(num)) > 1: 
        return digital_sum(digital_helper(sum(digital_helper(num))))
    else:
        return sum(digital_helper(num))

错误:

>>> digital_sum(10)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in digital_sum
  File "<stdin>", line 2, in digital_sum
  File "<stdin>", line 6, in digital_helper
ValueError: invalid literal for int() with base 10: '['

1 个答案:

答案 0 :(得分:2)

密切关注球:

  1. num最初是一个整数。
  2. digital_helper()但是,会返回一个列表,然后再将其传递给digital_sum()

    return digital_sum(digital_helper(...))
    
  3. digital_sum()的递归电话中,num现在是一个列表。

  4. 然后,您再次将num传递给digital_helper(),但现在它是一个列表,代码失败。
  5. 代码失败,因为[1, 2, 3]转换为字符串的数字列表包含字符'[',而且不是整数。