检查任何3个数字的总和是否等于0(python)

时间:2018-01-20 22:44:25

标签: python-3.x

我想开发一个功能,它接收一个数字列表并返回' True'如果这些数字中任何3个的总和等于0,如果不是,则返回False。 例如,如果我输入[2,2,1,-1,0],输出应为“真”,因为1-1 + 0 = 0

def sum3(list):
    list=map(str,list)
    for a in list:
        for b in list:
            for c in list:
                if int(a)+int(b)+int(c)==0:
                     return True
                else:
                    return False

到目前为止我有这个代码,但它只能用于FIRST三个数字的总和等于三。

1 个答案:

答案 0 :(得分:2)

我不知道为什么你mapstrings然后转换回整数,所以我删除了它,尽管修复它并不重要。此外,您应该将参数重命名为l(或等效),而不是list,因为这会覆盖内置的list()函数。

主要的是将return False移到3 for-loops之外,以便只有在评估了所有组合后才会返回。您还需要仅搜索列表中的元素而不是当前正在评估的元素。如果存在@Hazerd,那么该函数将返回0,因为True将会0ab和/ c一次。

这给出了纠正的功能:

def sum3(l):
    for a in range(len(l)):
        for b in range(a+1, len(l)):
            for c in range(b+1, len(l)):
                if l[a]+l[b]+l[c] == 0:
                     return True
    return False

并且一些测试表明它有效:

>>> sum3([2, 2, 1, -1, 0])
True
>>> sum3([0, 1, 2])
False