Python 确定布尔变量的值

Python 确定布尔变量的值,python,numpy,Python,Numpy,考虑两个布尔变量A和B,以及对这些变量的一些逻辑运算,得出C: C = A [OP] B 其中“OP”可以是“&”、“|”、“^”、“~”等的任意组合 A和B的值有待确定 是否可以使用逻辑运算创建一系列测试,以便仅基于每个测试的C值确定a和B的真/假值 由于应用程序是使用NumPy开发的,因此我最感兴趣的是本软件包中的运算符。否,如果只给出C值和使用的运算,则无法确定A和B 需要一个反例来证明这一点: C= True OP= | A和B有三种可能的有效状态:A=True,B=True,A=T

考虑两个布尔变量A和B,以及对这些变量的一些逻辑运算,得出C:

C = A [OP] B
其中“OP”可以是“&”、“|”、“^”、“~”等的任意组合

A和B的值有待确定

是否可以使用逻辑运算创建一系列测试,以便仅基于每个测试的C值确定a和B的真/假值


由于应用程序是使用NumPy开发的,因此我最感兴趣的是本软件包中的运算符。

,如果只给出C值和使用的运算,则无法确定A和B

需要一个反例来证明这一点:

C= True
OP= |
A和B有三种可能的有效状态:
A=True,B=True
A=True,B=False
A=False,B=True


对于多个(用户选择的)测试,如果您将自己限制为
&
|
^
(xor),我们会得到相同的结果。在一般情况下,这显然是不可能的——因为运算是可交换的,所以不能区分A和B

例如,如果

A & B == False
A | B == True
A ^ B == True
A=True,B=False
A=False,B=True
都满足条件


如果我们对可以测试的表达式没有任何限制,那么获取
B
(例如)的值就很简单:只需计算
C=(A | ~A)| B
,结果将等于
B


但是,如果你没有任何限制,你可以直接说
C=B
,然后直接测试它

,如果只给出C的值和使用的运算,则无法确定A和B

需要一个反例来证明这一点:

C= True
OP= |
A和B有三种可能的有效状态:
A=True,B=True
A=True,B=False
A=False,B=True


对于多个(用户选择的)测试,如果您将自己限制为
&
|
^
(xor),我们会得到相同的结果。在一般情况下,这显然是不可能的——因为运算是可交换的,所以不能区分A和B

例如,如果

A & B == False
A | B == True
A ^ B == True
A=True,B=False
A=False,B=True
都满足条件


如果我们对可以测试的表达式没有任何限制,那么获取
B
(例如)的值就很简单:只需计算
C=(A | ~A)| B
,结果将等于
B


但是,如果你没有任何限制,你可以直接说
C=B
,然后直接测试它

你认识C和接线员吗?我不明白你怎么能仅仅根据C来确定A和B。例如,如果C是真的,右边可以是A或B,A和B,等等。你知道C和操作员吗?我不明白你怎么能仅仅根据C来确定A和B。例如,如果C是真的,右手边可以是A或B,A和B等等。但是,如果有足够多的C/op对,这是可能的。例如,True/|和False/^将提供足够的信息来知道A和B都是真的。是的,这就是我想要的:一系列的测试。@cytochrome你想做的测试有什么限制吗?你能在一个测试中使用任意数量的逻辑运算符吗?Aso,如果你能编写任何你想要的测试,为什么不直接测试
a
B
的值呢?我认为你需要更准确地说明这里的限制是什么。同时,我更新了这个问题来处理
&
|
^
@chepner在您的特定示例中是可能的,但不是一般意义上的(对于交换操作)。我在回答中添加了一个反例。不过,如果有足够多的C/op对,这是可能的。例如,True/|和False/^将提供足够的信息来知道a和B都是真的。是的,这就是我想要的:一系列测试。@细胞色素对你想要进行的测试有任何限制吗?你能在一个测试中使用任意数量的逻辑运算符吗?Aso,如果你能编写任何你想要的测试,为什么不直接测试
a
B
的值呢?我认为你需要更准确地说明这里的限制是什么。同时,我更新了这个问题来处理
&
|
^
@chepner在您的特定示例中是可能的,但不是一般意义上的(对于交换操作)。我在答案中加了一个反例