2016-12-28 51 views
3

我做了一个简单的测试,如下图所示:布尔测试:Python的打印“1”或“真”

>>> 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'或'真'。

这是为什么?

回答

1

这是通过and如何工作。 让我们来看看下面的例子:

p and q 

首先评估P,如果P为真,评估Q值。如果q为真,则返回True,但返回任何类型的q。所以:

1 and True # True 
True and 1 # 1 

对于or它是相反的。由于只有一个要求为真,如果第一个为真,则返回该类型的真。所以:

1 or True # 1 
True or 1 # True 
0

当您使用逻辑and操作的Python计算上次操作足够给一个答案。例如:

如果是:

1 and True and 1 

它会返回1,因为它需要去到最后(全部为真),它会返回一个是到底,即1

或者:

1 and 1 and True 

,它将返回true,因为真正的是最后一个操作数。

另一种情况:

1 and 0 and False 

它会返回0,因为它停在0,结果为0

False and 0 and 1 

将返回false,因为它停止在错误导致False评测。

希望这会有所帮助。