Python 如何从函数求和

Python 如何从函数求和,python,function,conditional-operator,Python,Function,Conditional Operator,我的代码有问题。 我有很多条件可以用6个数字进行加法 例如,我有一个简单的代码: nombre2 = randint(0, 200) nombre3 = randint(0, 200) nombre4 = randint(0, 200) nombre5 = randint(0, 200) nombre6 = randint(0, 200) état_initial = (nombre1, nombre2, nombre3, nombre4, nombre5, nombre6) etat = (0

我的代码有问题。 我有很多条件可以用6个数字进行加法

例如,我有一个简单的代码:

nombre2 = randint(0, 200)
nombre3 = randint(0, 200)
nombre4 = randint(0, 200)
nombre5 = randint(0, 200)
nombre6 = randint(0, 200)
état_initial = (nombre1, nombre2, nombre3, nombre4, nombre5, nombre6)
etat = (0, 0, 0, 0, 0, 0)

def addition(etat):
    return ((etat[0] + etat[1]) or (etat[0] + etat[2]) or (etat[0] + etat[3]) or (etat[0] + etat[4]) or (
                etat[0] + etat[5]) or (etat[1] + etat[2]) or (etat[1] + etat[3]) or (etat[1] + etat[4]) or (
                        etat[1] + etat[5]) or (etat[2] + etat[3]) or (etat[2] + etat[4]) or (etat[2] + etat[5])
            or (etat[3] + etat[4]) or (etat[3] + etat[5]) or (etat[4] + etat[5]))



print(addition(état_initial))
但问题是我只得到了加法的第一个数和第二个数,(etat[0]和etat[1])。所以我的指令“或”不起作用,我不知道为什么

下面是我的结果示例:

116
L'état initial est  (17, 99, 80, 163, 107, 34)
但我也希望有数字1和3或数字1和4。。。。不仅是数字1和2的加法


感谢阅读我

那是因为你要加的两个数字大于0。这意味着Python将把它转换成bool,并确认它是正确的。在这一点上,Python会看到第一个条件为true,而所有其他条件都是或连接的。现在,脚本将立即退出条件并返回第一个找到的true

我真的不明白您对该功能的总体要求是什么,但我会做以下几点:

état_initial = [nombre1, nombre2, nombre3, nombre4, nombre5, nombre6]
print(sum(état_initial))
如果你想知道一个数字或字符串在一个条件下的行为,就把它们放在布尔函数中:

bool(17)
结果会是真的吗

bool(0)

结果将为false

请在问题中以正确格式的文本显示预期输出的示例。您认为“或”应该做什么?您的代码以非常详细的方式做的是检查两个数字的任意组合之和是否为非零,并返回第一个这样的对。这就是你想要的吗?看看懒惰的评估。当您的代码处理第一个可能的返回值时,它会声明自己已完成。你将不得不显著地重写它,以得到你想要的。我现在没有时间讨论细节,我稍后再检查,或者是一个逻辑运算符,也就是说,它对True和False进行操作。不清楚为什么您认为应该在代码中使用此选项。您希望看到的输出是什么?翻译变量名会有点帮助:nombre->“number”,état_initial->“initial_state”,état->“state”。请注意,
bool(num)
对于所有非零数返回True,而不仅仅是正数。