Python 逻辑运算符
Python 逻辑运算符用于形成复合布尔表达式。这些逻辑运算符的每个操作数本身就是一个布尔表达式。例如
例
age > 16 and marks > 80
percentage < 50 or attendance < 75
除了关键字 False 之外,Python 还会将 None、所有类型的数字零和空序列(字符串、元组、列表)、空字典 和 空集 解释为 False。所有其他值都被视为 True。
Python 中有三个逻辑运算符。它们是 “and”、“or” 和 “not”。它们必须为小写。
逻辑 “and” 运算符
要使复合布尔表达式为 True,两个操作数都必须为 True。如果任意或两个操作数的计算结果为 False,则表达式返回 False。
逻辑 “and” 运算符真值表
下表显示了这些方案。
a | b | a and b |
---|---|---|
F | F | F |
F | T | F |
T | F | F |
T | T | T |
逻辑 “or” 运算符
相反,如果任何操作数为 True,则 or 运算符返回 True。要使复合布尔表达式为 False,两个操作数都必须为 False。
逻辑 “or” 运算符真值表
下表显示了具有不同条件的 “or” 运算符的结果:
a | b | a or b |
---|---|---|
F | F | F |
F | T | T |
T | F | T |
T | T | T |
逻辑 “not” 运算符
这是一个一元运算符。后面的 Boolean 操作数的状态是相反的。结果,not True 变为 False,not False 变为 True。
逻辑 “not” 运算符真值表
a | not (a) |
---|---|
F | T |
T | F |
Python 解释器如何计算逻辑运算符?
表达式 “x and y” 首先计算 “x”。如果 “x” 为 false,则返回其值;否则,将计算 “y” 并返回结果值。
表达式 “x or y” 首先计算 “x”;如果 “x” 为 true,则返回其值;否则,将计算 “y” 并返回结果值。
Python 逻辑运算符示例
下面给出了逻辑运算符的一些用例 -
示例 1:具有布尔条件的逻辑运算符
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 y > 10: True
x > 10 or y > 10: True
x%2 == 0 and y%2 == 0: True
not (x+y>15): False
示例 2:具有非布尔条件的逻辑运算符
我们可以将非布尔操作数与逻辑运算符一起使用。在这里,我们不需要任何非零数字和非空序列的计算结果为 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 or y: 10
z or x: 10
y or z: 20
示例 3:具有字符串和元组的逻辑运算符
在以下示例中,字符串变量被视为 True,空元组被视为 False -
a="Hello"
b=tuple()
print("a and b:",a and b)
print("b or a:",b or a)
它将产生以下输出 -
b or a: Hello
示例 4:用于比较序列(列表)的逻辑运算符
最后,下面的两个 list 对象是非空的。因此 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 or y: [1, 2, 3]