【发布时间】:2021-03-11 09:37:19
【问题描述】:
好的。在这个问题上遇到这么多麻烦,我觉得有点傻,但基本上,这是我到目前为止的代码:
def addition_nest(x):
netsum = 0
sublist = []
if isinstance(x, int):
return x
if isinstance(x, list):
for sublist in x:
if sublist == []:
return netsum
else:
netsum = netsum + addition_nest(sublist)
return netsum
我不断收到错误消息,说操作数 + 不适用于 int 和 NoneTypes。关于如何绕过这个的任何想法?代码基本上需要能够将列表/嵌套列表中的所有整数相加,并省略列表中的任何其他元素。
【问题讨论】:
-
如果您缩进
netsum = 0行,您的代码似乎可以正常工作。什么样的输入会给你带来这个问题? -
如果没有实际运行代码,我很确定错误来自以下行:
netsum = netsum + addition_nest(..)(尝试添加整数(netsum)和可能的 NoneType(递归调用的返回值)。现在要弄清楚你的函数在哪里可能返回一个无,你应该追踪所有返回点。在你的代码中,最后一行是隐式的return None。所以,你是否传递了任何既不是 int 也不是列表的嵌套元素? 如果是这样,最后一行应该只是说:return 0。 -
您是否考虑过如果
x既不是int也不是list会发生什么?
标签: python recursion iteration