Python 仅当三分之一或三分之三为真时才为真的代码

Python 仅当三分之一或三分之三为真时才为真的代码,python,boolean,Python,Boolean,你应该做if语句来总结数字,只让数字1和3为真,还是有其他方法 g= bool(a) != bool(b) != bool(c) python中的布尔值可以转换为整数,整数可以转换为布尔值,因此可以执行如下操作 finalVar = bool((int(var1)+int(var2)+int(var3)) % 2) 要根据最新的注释对此进行补充:“如果所有3都为假,则应为真”,可以使用三元运算符来获得所有为0的边情况: temp = bool(int(var1)+int(var2)+int(

你应该做if语句来总结数字,只让数字1和3为真,还是有其他方法

g= bool(a) != bool(b) != bool(c)

python中的布尔值可以转换为整数,整数可以转换为布尔值,因此可以执行如下操作

finalVar = bool((int(var1)+int(var2)+int(var3)) % 2)
要根据最新的注释对此进行补充:“如果所有3都为假,则应为真”,可以使用三元运算符来获得所有为0的边情况:

temp = bool(int(var1)+int(var2)+int(var3))
finalVar = True if temp == 0 else temp % 2

尝试异或操作符:
bool(a)^bool(b)^bool(c)

输出:

True True True : True
True True False : False
True False True : False
True False False : True
False True True : False
False True False : True
False False True : True
False False False : False

您也可以在此处使用
sum

sum(a, b, c) in {0, 1, 3}
作为示例函数:

def check(*args):
    return sum(args) in {0, 1, len(args)}

for a in [True, False]:
    for b in [True, False]:
        for c in [True, False]:
            print(a, b, c, ":", check(a, b, c))
return sum(map(bool, args)) in {0, 1, len(args)}
其中打印:

True True True : True
True True False : False
True False True : False
True False False : True
False True True : False
False True False : True
False False True : True
False False False : True
如果需要确保参数被视为真实值,则只需使用方便的dandy map函数:

def check(*args):
    return sum(args) in {0, 1, len(args)}

for a in [True, False]:
    for b in [True, False]:
        for c in [True, False]:
            print(a, b, c, ":", check(a, b, c))
return sum(map(bool, args)) in {0, 1, len(args)}

但我的问题是,当输入是3个假变量时,当它应该是一个假变量时,我得到了一个假变量true@AlejandroDeliusSciaroni您的评论与问题描述冲突。您有
zero
True项,并且零不是一个奇数。但我的问题是,当输入为3个假变量时,当它应该为真时,我会得到一个假。此注释与您的问题描述冲突。你有零个
True
项,零不是一个奇数。我在条件集中添加了
0
,因为我看到了你的评论,否则只需使用
{1,len(args)}
这个问题不清楚。我建议标题为“Python:true,如果三者中有一个或三个为true”。另外,澄清“if”是Python代码,用代码反勾号换行,使其显示为
if
。最后,你的句子提到“总结数字”,但标题是“真实”。你想要实现什么还不清楚。