Python - 逻辑运算符


Python 逻辑运算符用于形成复合布尔表达式。这些逻辑运算符的每个操作数本身就是一个布尔表达式。例如,

age > 16 and marks > 80
percentage < 50 or attendance < 75

与关键字 False 一起,Python 将 None、所有类型的数字零、空序列(字符串、元组、列表)、空字典和空集解释为 False。所有其他值均被视为 True。

Python 中有 3 个逻辑运算符。它们是“和”、“或”和“非”。它们必须为小写。

“与”运算符

要使复合布尔表达式为 True,两个操作数都必须为 True。如果任何或两个操作数的计算结果为 False,则表达式返回 False。下表显示了这些场景。

A a 和 b
F F F
F 时间 F
时间 F F
时间 时间 时间

“或”运算符

相反,如果任何操作数为 True,则 or 运算符返回 True。对于复合布尔表达式为 False,两个操作数都必须为 False,下表显示 -

A a或b
F F F
F 时间 时间
时间 F F
时间 时间 时间

“非”运算符

这是一个一元运算符。随后的布尔操作数的状态被反转。结果,not True 变为 False,not False 变为 True。

A 不是(一)
F 时间
时间 F

Python解释器如何计算逻辑运算符?

表达式“x and y”首先计算“x”。如果“x”为假,则返回其值;否则,计算“y”并返回结果值。

逻辑运算符

表达式“x or y”首先计算“x”;如果“x”为真,则返回其值;否则,计算“y”并返回结果值。

x_或_y

下面给出了逻辑运算符的一些用例 -

x = 10
y = 20
print("x > 0 and x < 10:",x > 0 and x < 10)
print("x > 0 and y > 10:",x > 0 and y > 10)
print("x > 10 or y > 10:",x > 10 or y > 10)
print("x%2 == 0 and y%2 == 0:",x%2 == 0 and y%2 == 0)
print ("not (x+y>15):", not (x+y)>15)

它将产生以下输出-

x > 0 and x < 10: False
x > 0 and y > 10: True
x > 10 or y > 10: True
x%2 == 0 and y%2 == 0: True
not (x+y>15): False

我们可以将非布尔操作数与逻辑运算符一起使用。在这里,我们不需要任何非零数字和非空序列评估为 True。因此,适用相同的逻辑运算符真值表。

在以下示例中,数字操作数用于逻辑运算符。变量“x”、“y”评估为 True,“z”评估为 False

x = 10
y = 20
z = 0
print("x and y:",x and y)
print("x or y:",x or y)
print("z or x:",z or x)
print("y or z:", y or z)

它将产生以下输出-

x and y: 20
x or y: 10
z or x: 10
y or z: 20

在以下示例中,字符串变量被视为 True,空元组被视为 False -

a="Hello"
b=tuple()
print("a and b:",a and b)
print("b or a:",b or a)

它将产生以下输出-

a and b: ()
b or a: Hello

最后,下面的两个列表对象都是非空的。因此 x 和 y 返回后者,而 x 或 y 返回前者。

x=[1,2,3]
y=[10,20,30]
print("x and y:",x and y)
print("x or y:",x or y)

它将产生以下输出-

x and y: [10, 20, 30]
x or y: [1, 2, 3]