Image
python中邏輯運(yùn)算符的優(yōu)先級問題
遇到的問題
今天做題的時候撒桨,碰到一個關(guān)于邏輯運(yùn)算符優(yōu)先級的問題,看到之后我懵了
0 and 1
2 and 3
0 or 1
2 or 3
上面的返回值是什么券躁?
我一開始以為返回的都是左邊的值艾扮,但是結(jié)果和我想的不同艰毒,結(jié)果如下:
In [4]: 0 and 1
Out[4]: 0
In [5]: 2 and 3
Out[5]: 3
In [6]: 0 or 1
Out[6]: 1
In [7]: 2 or 3
Out[7]: 2
為什么 0 and 1
返回的是 0 , 而2 and 3
卻返回的是3筐高?
為什么 0 or 1
返回的是 1 , 而 2 or 3
卻返回的是2?
經(jīng)過我不斷地額翻閱資料丑瞧,我找到了答案柑土。
首先要明白以下2點(diǎn):
邏輯運(yùn)算符的優(yōu)先級:not > and > or
Python中所有的空字符串都是假,非空字符串都是真绊汹,非零的數(shù)字都是真
關(guān)于and:
只要左邊的表達(dá)式為真冰单,那么整個表達(dá)式返回的是右邊表達(dá)式的值,否則返回的是左邊表達(dá)式的值
-
換言之灸促,x and y 的值只能是x 和 y诫欠,x為真時就是y涵卵,x為假就是x,示例如下:
In [1]: x=1 In [2]: y=2 In [3]: x and y Out[3]: 2 In [4]: x=0 In [5]: y=1 In [6]: x and y Out[6]: 0
關(guān)于or:
只要兩邊的表達(dá)式都為真荒叼,整個表達(dá)式的結(jié)果返回的是左邊表達(dá)式的值轿偎;
如果一真一假,返回真值表達(dá)式的值被廓;
如果兩個值都假坏晦,比如空值和0,返回的是右邊的值
-
換言之嫁乘,x or y 的值只可能是 x 和 y昆婿,x為真就是x,x為假就是y蜓斧,示例如下:
In [7]: x=1 In [8]: y=0 In [9]: x or y Out[9]: 1 In [10]: x='hello' In [11]: y='world' In [12]: x or y Out[12]: 'hello' In [13]: x='' In [14]: y=0 In [15]: x or y Out[15]: 0
關(guān)于not:
- x為真仓蛆,則輸出False
- x為假,則輸出True
當(dāng)not和and及or在一起運(yùn)算時挎春,優(yōu)先級為是not>and>or看疙,下面來看下3個邏輯運(yùn)算符一起使用的結(jié)果:
In [18]: (5>3) and (2>4) or not 6<7
Out[18]: False
In [19]: (5>3) and (2<4) or not 6<7
Out[19]: True
In [20]: (5>3) and (2<4) or not 6>7
Out[20]: True
希望對大家有幫助,也是對自己遇到的問題的記錄直奋。