布尔测试:Python打印'1'或'True'

时间:2016-12-28 05:55:24

标签: python-3.x boolean boolean-expression

我做了一个简单的测试,如下所示:

>>> valsH["S0"] = 1
>>> valsH["I1"] = 0
>>> valsH["I2"] = 1
>>> valsH["I0"] = 1
>>> """original position of: not valsH["I1"]"""
>>>
>>> valsH["I0"] and not valsH["I1"] and valsH["I2"] and valsH["S0"]
1
>>> """After moving: not valsH["I1"] to the end of the expression"""
>>>
>>> valsH["I0"] and valsH["I2"] and valsH["S0"] and not valsH["I1"]
True
>>> 

所以似乎取决于哪里

not valsH["I1"]

是,布尔方程的值打印为“1”或“True”。

为什么会这样?

2 个答案:

答案 0 :(得分:1)

这是and的工作原理。 我们来看以下示例:

p and q

首先评估p,如果p为真,则评估q。如果q为真,则返回True但不管q的类型。所以:

1 and True # True
True and 1 # 1 

对于or,它反过来了。由于只需要一个为真,如果第一个为真,则返回该类型的true。所以:

1 or True # 1
True or 1 # True

答案 1 :(得分:0)

当您使用逻辑and操作时,Python会对最后一个操作数进行评估,足以给出答案。例如:

如果是:

1 and True and 1

它将返回1,因为它需要一直持续到最后(全部为True)并且它将返回最后的内容,即1。

或者:

1 and 1 and True

它将返回True,因为True是最后一个操作数。

另一个案例:

1 and 0 and False

它将返回0,因为它停止了对0的评估,结果为0。

False and 0 and 1

将返回False,因为它会停止对False的评估,从而导致False

希望这有帮助。