我做了一个简单的测试,如下所示:
>>> 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”。
为什么会这样?
答案 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
。
希望这有帮助。