逻辑判断 ( and 和 or )
在逻辑判断时,很常使用 and、or 的逻辑运算子,然而 Python 里的 and 和 or 除了可以回传 True 和 False,更可以回传比较后的值,这篇教学将会介绍 Python 里 and 和 or 的用法。
本篇使用的 Python 版本为 3.7.12,所有范例可使用 Google Colab 实作,不用安装任何软件 ( 参考:使用 Google Colab )
and 和 or 的使用原则
在 Python 里使用 and 与 or 回传值时,会遵照下列几个原则进行:
- 使用 and 运算,如果全部都是 True,回传最右边 True 的值,否则回传第一个 False 的值。
- 使用 or 运算,如果全为 False,回传最右边 False 的值,否则回传第一个 True 的值。
- 元素除了 0、空 ( 空字串、空列表...等 )、None 和 False,其他在判断式里,全都是 True。
- 越左方 ( 越前方 ) 会越先判断,逐步往右边判断。
- 除了从左向右判断,同时使用多个 and、or 或 not,会先判断 not,再判断 and,最后再判断 or。
在判断式里使用 and 和 or
通常 and 和 or 会出现在逻辑判断里,下方的例子使用 and 必须前后条件都满足,使用 or 只需要满足其中一项。
a = 1
b = 2
c = 3
if a<b and a<c:
print('ok1') # 顯示 ok1
if a<b or a>c:
print('ok2') # 顯示 ok2
如果有好几个 or,越左方 ( 越前方 ) 会越先判断,逐步往右边判断。
a = 2
b = 3
c = 0
if a>b or a<c or a==2:
print('ok1') # 印出 ok1
如果同时有 and 和 or,则会先判断 and,然后再接着从左向右判断:
a = 2
b = 3
c = 0
if a>b or a<c or a==2 and b==4: # 效果等同 (a>b or a<c) or (a==2 and b==4)
print('ok1')
else:
print('XXX') # 印出 XXX
下方的例子也会先判断 and,然后再接着从左向右判断:
a = 2
b = 3
c = 0
if a>b or a<c and a==2 or b==4: # 效果等同 (a>b or (a<c and a==2)) or b==4
print('ok1')
else:
print('XXX') # 印出 XXX
使用 and 和 or 回传值
下方的例子可以看出按照原则,分别会回传不同的值:
a = 1 and 2 and 3
print(a) # 3,全部都 True,所以回傳最右邊的值
b = 1 and 0 and 2
print(b) # 0,遇到 0 ( False ),回傳第一個 False 的值就是 0
c = 1 or 2 or 3
print(c) # 1,全部都 True,所以回傳第一個值
d = 1 or 0 or 3
print(d) # 1,遇到 0 ( False ),回傳第一個 True 的值就是 1
e = 1 and 2 or 3
print(e) # 2,效果等同 ( 1 and 2 ) or 3
f = 1 or 2 and 3
print(f) # 1,效果等同 1 or ( 2 and 3 ),2 和 3 先取出 3 之後變成 1 or 3
g = 1 and 2 or 3 and 4 or 5
print(g) # 2,效果等同 ( 1 and 2 ) or ( 3 and 4 ) or 5
如果将回传值应用在判断式里,就会直接当作 True 或 False 使用,例如下方的例子,会一次判断 a、b、c 三个变数的数值。
a = 1
b = 2
c = 3
if(a and b and c): # 回傳 3 --> True
print('ok') # 印出 ok
改成下方的例子,就会印出 not ok。
a = 1
b = 0 # b 等於 0
c = 3
if(a and b and c): # 回傳 0 --> False
print('ok')
else:
rint('not ok') # 印出 not ok
微信扫码关注
抖音扫码关注