逻辑运算符基本描述
运算符 | 逻辑表达式 | 描述 | 实例 |
---|---|---|---|
and | x and y | 布尔”与”:如果 x 为 False,x and y 返回 False,否则它返回 y 的值。 | True and False, 返回 False。 |
or | x or y | 布尔”或”:如果 x 是 True,它返回 True,否则它返回 y 的值。 | False or True, 返回 True。 |
not | not x | 布尔”非”:如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not True 返回 False, not False 返回 True |
a = 1
b = 2
c = 3
print((a < b) and (b < c)) # True
print((a > b) and (b < c)) # False
print((a > b) or (b < c)) # True
print(not (a > b)) # True
- 1
- 2
- 3
- 4
- 5
- 6
- 7
在python里面,0、’’、[]、()、{}、None为假
在python
中and和or返回的值并不是True和false这么简单。
# and的返回值
print(2 and 5) # 5
print(3 and "") # 返回空
# or的返回值
print(2 or 5) # 2
print(""or 3) # 3
print("" or 0) # 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
由上我们可知对于
and
,如果没有价值,返回的是最后一个真值,如果有假值,则返回第一个假值。;
对于or
,如果没有真值,返回的是最后一个假值,如果有真值,则返回的是第一个真值。
逻辑运算符的本质
在 Python
中,and
和 or
不一定会计算右边表达式的值,有时候只计算左边表达式的值
就能得到最终结果。
另外,and
和 or
运算符会将其中一个表达式的值作为最终结果,而不是将 True 或者 False 作为最终结果。
应用:三目运算符
在c语言中三目运算符操作为a?b:c
我们来用python的逻辑运算符表示一下
优先级:非>与>或
a = "是小怪兽"
b = "不,是奥特曼"
print(1 and a or b) # 是小怪兽
print(0 and a or b) # 不,是奥特曼
- 1
- 2
- 3
- 4
- 5
但是这样写会出现问题
例如:
a = ""
b = "不,是奥特曼"
print(1 and a or b) # 不,是奥特曼
- 1
- 2
- 3
- 4
解决:
a = ""
b = "不,是奥特曼"
print(1 and a or b) # 不,是奥特曼
c = (1 and [a] or [b])
print(c[0]) # 返回空
- 1
- 2
- 3
- 4
- 5
- 6
( ’ ’ )是为真的,且上面表达式中括号里的值为‘ ’,所以以上结果为空