首页 > 解决方案 > 尝试在列表中添加整数时出现连续类型错误?

问题描述

好的。在这个问题上遇到这么多麻烦我觉得有点傻,但基本上,这是我到目前为止的代码:

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。关于如何绕过这个的任何想法?代码基本上需要能够将列表/嵌套列表中的所有整数相加,并省略列表中的任何其他元素。

标签: pythonrecursioniteration

解决方案


此代码将为您提供预期的输出。

def addition_nest(x):
    netsum = 0
    if isinstance(x, int):
    # if isinstance(x, (int, float)):
        return x
    elif isinstance(x, list):
        for each_element in x:
            if isinstance(each_element, int):
            # if isinstance(each_element, (int, float)):
                netsum += each_element
            elif isinstance(each_element, list):
                netsum += addition_nest(each_element)
        return netsum

print(addition_nest(25))  ## Output: 25
print(addition_nest([25, 30, 'a']))  ## Output: 55
print(addition_nest([25, 30, ['a', 10, 20]]))  ## Output: 85

如果您还希望上面的代码float也可以使用,请将 if 条件替换为注释行。

在您现有的代码中,您已经处理了当父列表中的元素是另一个列表或整数时的场景。但是您没有为其他数据类型处理它。这就是您面临错误的原因。


推荐阅读