Python - 逻辑运算符
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" 运算符
相反,or 运算符在任一操作数为 True 时返回 True。要使复合布尔表达式为 False,两个操作数都必须为 False。
逻辑 "or" 运算符真值表
下表显示了 "or" 运算符在不同条件下的结果:
| a | b | a or b |
|---|---|---|
| F | F | F |
| F | T | T |
| T | F | T |
| T | T | T |
逻辑 "not" 运算符
这是一个一元运算符。其后布尔操作数的状态被反转。因此,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 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
示例 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 and y: 20 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)
它将产生以下输出 −
a and b: () b or a: Hello
示例 4:使用逻辑运算符比较序列(列表)
最后,下面的两个列表对象都是非空的。因此 x and y 返回后者,x or 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]