【发布时间】:2020-06-06 14:10:59
【问题描述】:
所以我的 Python 代码在下面继续查找数字的总和 (9983 = 9+9+8+3 = 29 = 2+9 = 11 = 1+1 = 2) 不起作用,它给了我这个异常
ValueError: invalid literal for int() with base 10: '['".
它之前没有使用列表理解,而是通过正常迭代列表来完成它,所以我怀疑这是列表理解的问题?帮忙?
x = int(input())
def rec(x):
if (x<10):
return x
return rec(sum(x))
def sum(x):
lst = [int(y) for y in list(str(x))]
return sum(lst)
print(rec(x))
【问题讨论】:
-
不要使用
sum作为你的函数名,它是一个内置函数名,会导致问题。请注意,您创建了一个递归函数,这可能不是您想要的。更改名称以避免出现问题。 -
正如汤姆所说,这就是问题所在:
rec应该是递归的,这很好,但sum也是递归的,它不应该是! -
永远不要使用已经存在的名称,来自你的代码或内置的(如果你知道
sum存在),如果不仅仅是一个警告,可以避免一个loooot烦恼
标签: python list sum list-comprehension