python关系运算符和逻辑运算符的优先级_python中逻辑运算符的优先级问题
遇到的問題
今天做題的時候,碰到一個關于邏輯運算符優先級的問題,看到之后我懵了
0 and 1
2 and 3
0 or 1
2 or 3
上面的返回值是什么?
我一開始以為返回的都是左邊的值,但是結果和我想的不同,結果如下:
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?
經過我不斷地額翻閱資料,我找到了答案。
首先要明白以下2點:邏輯運算符的優先級:not > and > or
Python中所有的空字符串都是假,非空字符串都是真,非零的數字都是真
關于and:只要左邊的表達式為真,那么整個表達式返回的是右邊表達式的值,否則返回的是左邊表達式的值
換言之,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
關于or:只要兩邊的表達式都為真,整個表達式的結果返回的是左邊表達式的值;
如果一真一假,返回真值表達式的值;
如果兩個值都假,比如空值和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
關于not:x為真,則輸出False
x為假,則輸出True
當not和and及or在一起運算時,優先級為是not>and>or,下面來看下3個邏輯運算符一起使用的結果:
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
希望對大家有幫助,也是對自己遇到的問題的記錄。
參考鏈接
總結
以上是生活随笔為你收集整理的python关系运算符和逻辑运算符的优先级_python中逻辑运算符的优先级问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c#switch语句判断成绩_C#程序流
- 下一篇: python中read和readline