python邏輯運算符優先順序
㈠ python教程:第19篇 邏輯運算符
我們在高一時學習過命題的邏輯運算:與、或、非,在計算機科學中,其運算規則也是類似的(基本原理相同,但操作數與返回結果有所不同),Python也不例外。
在Python中,與用and、或用or、非用not表示。邏輯運算符一般用於操作返回值為bool類型的表達式,以表達式的值True(真)和False(假)為例。其運算規則總覽如下:
需要特別注意的是,在Python中,雖然邏輯運算符的操作數一般是運算結果為邏輯值的表達式,但也可以是運算結果為數值、字元串、元組、列表、集合、字典等類型的表達式。返回值也不一定是邏輯(bool)類型。而有些教程錯誤地稱只能操作bool類型的表達式以及始終返回bool類型。
我們可以用兩個not查看某種數據等價的邏輯值,下面是一些常見數據類型的等價規則:
一、數值除了0視為False,其餘數值(包括小數、負數、復數)均視為True:
二、字元串除了空字元串視為False外,其餘均視為True(包括空格、製表、換行、回車等空白符,也包括字元串'False'):
三、對於元組、列表、集合、字典也是如此,空的視為False,非空的均視為True,即使其中只有一個值為False或0的數據:
有一種情況容易產生誤解,就是使用小括弧將False包圍起來,這其實也是表示bool值,而不是元組,元組是使用小括弧包圍的數據列表,但是如果只有一個成員,數據後面要加一個逗號,正如上述示例中所示那樣,下面的示例顯示了小括弧包圍的False的數據類型:
四、對於一個類也是如此,非空類視為True(註:無法創建什麼都不包含的空類):
五、None視為False:
總結一下就是: 數值0、空字元串、空元組、空列表、空集合、空字典以及None,均視為邏輯值False,其餘均視為True。
需要注意的是,邏輯運算符的返回值不一定是bool類型。
了解了非bool類型的操作數等價的邏輯值之後,還需要了解邏輯運算符的完全運算規則,才能得知具體會返回什麼值。
and為邏輯與(也稱邏輯且),其使用語法如下:
表達式A and 表達式B
其中操作數表達式A和表達式B一般均為邏輯值。但也可以是數值、字元串、元組、列表、集合、字典、對象等類型。
其運算通用規則為: 如果 表達式A 的運算結果等價於False,返回其運算結果,不再計算表達式B。否則返回 表達式B 的運算結果。
對於最常用的兩個操作數均為邏輯值的情況,只有當兩個操作數均為True的情況下為True,其餘情況均為False,以下是所有四種可能情況的運行示例:
其中兩個操作數也都可以是非邏輯值。
當第1個操作數結果等價於False時,比如False、0、None、空字元串、空元組、空列表、空集合、空字典等,整個邏輯表達式返回第1個操作數,注意,返回的是操作數的原始值,而不是等價值False,下面是運行示例(None表示什麼也沒有,所以沒有輸出。set()返回空集合):
當第1個操作數等價於True時(非數值0、非空字元串等都等價於True),則不管第2個表達式的返回值是什麼,都將返回第2個值,當然這時第2個表達式不能有語法錯誤:
or為邏輯或,其使用格式如下:
表達式A or 表達式B
其中操作數表達式A和表達式B與and中的操作數含義相同。
其運算通用規則為: 如果 表達式A 的運算結果等價於True,返回其運算結果,不再計算表達式B。否則返回 表達式B 的運算結果。 其與and的區別在於,or當表達式A為True則返回表達式A,and當其為False時返回表達式A。
以上面and的示例為模板,可以看到,or與and的返回值正好相反。
與and類似,當表達式A相當於True時,表達式B也不會計算:
下面是常見的兩個操作數均為邏輯值的情況,or運算符的四種可能情況的運行示例(除非兩個值都是False時返回False,其餘情況返回True):
not為邏輯非,其使用格式如下:
not 表達式
其運算規則為: 當 表達式 的運算結果為False、0、None、空字元串、空元組、空列表、空集合、空字典時,返回True。其餘情況均返回False。
下面是一些不同數據類型的運算示例:
與and和or不同的是,not的返回值始終是bool類型,即只有True和False兩種可能的取值。
所以,可以使用not not 表達式來查看一個非邏輯值是等價True還是False,正如上文非邏輯操作數等價的邏輯值中所示的那樣。
當然,not最常用的用法還是逆轉邏輯值,下面是兩種可能情況的運行示例:
邏輯運算符優先順序not>and>or。
下面的示例證明and先於or運算:
下面的示例證明not先於or運算:
下面的示例證明not先於and運算:
另外,所有的邏輯運算符都比元組逗號分隔符的優先順序要高,以and為例,比如下面是一個元組:
下面的例子中:
先計算了3 and 4,然後再組合成了元組,相當於:
而不是:
not與or的優先順序也比其要高,下面是示例:
所以雖然元組有時可以省略小括弧,但在與邏輯運算符運算時,元組請始終使用小括弧。
這篇文章的整理與編寫花費了我近十小時時間,從上午寫到晚上。是我目前最具匠心的文章,如果說以前我的文章只適合初學者,偶爾超水平發揮才適合中級學者,那麼這篇文章我感覺對高水平人員也有重要的參考意義。
就我目前所知,我所寫的教程,在全網找不到第二個比它更優秀的了,當然,每個人心中都有一桿稱,不同讀者可能也有不同的際遇,我能做的只是做好自己。
所以,如果你覺得此文不錯,可以分享給你身邊的朋友、同學、同事、同鄉,世界很大也很小,很多東西,初見只能依靠緣分。而再見就需要你的主動了,緣分天註定,努力亦可改變命運。
Python教程:第11篇 變數賦值
Python教程:第17篇 比較運算符
Python教程:第18篇 算術運算符
㈡ python-邏輯運算:not\and\or和布爾值:True\False
這東西在每一個語言都有,and or not 對應與、或、非三種邏輯運算;True和False是bool值,即真和假。
邏輯運算和布爾值經常用於if判斷語句、循環語句的條件語句。
首先作為控制條件應該是一個布爾值,即真和假——True和false。
python的內置類——布爾類,只有兩個實例:True和false。對於一般數字而言,0是False,非0是True;對於序列和容器類型,如列表、字典、字元串等,空為False,非空為True。
所以就有了這樣的用法:
輸出:1 為True
輸出: 0 為 False
輸出:a = '字元串'
這了可以看出一個實例本身可以作為控制條件,這是因為,解釋器會先把這個實例轉換為bool類型,然後根據這個bool類型執行程序。即bool(a) = True、bool(b) = False。
但是只用這樣的方式控製程序顯然不夠,比如我希望a為空,b為非空的時候,我輸出「我天下第一」,這怎麼辦?
如果不用not and or 就會寫成這樣:
輸出:我天下第一
可以把a 看成False,b看成True。
從這里我們可以看到,我們用了兩層if--else語句來判斷a為空,b為非空的情況,那麼我用邏輯運算呢?
輸出:我天下第一
一樣的:可以把a 看成False,b看成True。那麼not a and b的意思就是:not False and True
這時候就是邏輯運算符的優先順序的問題,這可以借鑒c語言的那本書《C程序設計》第五版的第92頁
!非
算數運算符
關系運算符
&& 和 ||
賦值運算符
運算優先順序從上到下,越來越低。
這是C語言里的,在python里就是:
not -------------->高
and 和 or ---------->低
所以我們先算not
於是 not False and True 就成所以了True and True這就很清楚了結果為True,所以「我天下第一」。
所以我們就可以總結出:
1.先將實例變為布爾值
2.在計算所有的not
3.根據語言特性,從左到右或者從右到左計算邏輯運算結果。
當然在python中是從左到右。
and 和 or 運算具有短路保護!什麼意思呢?看一個栗子
1 or a
or的左邊是1也就是True,根據or的運演算法則,只要有一個真則為真,所以不管a是真還是假,結果都是真。
0 and a
and 左邊為0,為False,同樣,and只要有一個為假則為假,所以不管a是真還是假,結果都是假。
所以and 和 or 的結果可以根據第一個操作數的值來確定,那麼他就不會對第二個操作數進行運算。
這個功能用起來要很小心,不然很可能會出現想不到的結果。
這里會輸出什麼呢?
輸出:我天下第一
因為x是True,無論y and z 的結果是什麼,這個語句的結果都是True,這就是短路保護,當然也有的人說惰性計算。
我覺得迭代器、生成器那個才叫惰性計算。
㈢ Python中的邏輯運算符:not,and,or的優先順序
1、and為且,and兩邊的變數都是true的時候結果是true
如:1)5>3 and 4>2 True
2)5>3 and 4<2 False
2、or為或,有一個旦卜哪是true的時候結果即為true
如模碼:1)5>3 or 4>2 True
2) 5>3 or 4<2 True
3、not取反.
如:1)弊飢not 5>3 False
2)not 5<3 True
4、當not和and及or在一起運算時,優先順序為是 not > and > or.
如果有括弧,括弧的優先順序最高,先運算括弧中的結果。
㈣ Python邏輯運算符and
and和or表達式的值是第一個能決定整個表達式是否成立的那個操作數的值。舉例:
3 and 4:第一個操作數3為真,但不能保證and成立,還要看第二個操作數4;4也為真,此時可以確定and一定成立,因此這個表達式的值是4。
'hello' and [] and 'world':第一個操作數'hello'為真,但不能保證and成立;第二個操作數[]為假,此時可以確定and一定不成立,因此這個表達式的值是[]。
'a' or 'b' or 'c' or 'd':第一個操作數a為真,此時可以確定or一定成立,因此這個表達式的值是'a'。
1 and 2 or 3 and 4:and的優先順序高於or,因此先求左邊的1 and 2,這個子表達式的值是2,2為真,可以確定or一定成立,因此整個表達式的值是2。
㈤ python-邏輯運算和布爾值
喬治·布爾(George Boole,1815.11.2~1864),1815年11月2日生於英格蘭的林肯。19世紀最重要的數學家之一,出版了《邏輯的數學分析》 ,這是它對符號邏輯諸多貢獻中的第一次。
布爾的邏輯代數理論建立在兩種邏輯值「真True」、「假False」和三種邏輯關系「與AND」、「或OR」、「非NOT」。這吵判大種理論為數字電子計算機的二進制、形關邏輯元件和邏輯電路的設計輔平了道路。
馮·諾依曼奠定了現代計算機的基礎,被世人尊為「計算機之父」,但在談到他的理論與構思時,他謙虛地說,這些理論與構思的基礎來自於英國數學家圖靈和布爾的思想。
谷歌在2015年的網頁紀念了布爾誕辰200周年。
布爾值
計算機的邏輯判斷,只有兩種結果,就是True(英文意思是「真」)和False(英文意思是「假」)
在Python中:
只要數字零、空對象以及特殊對象None都被認作是假,其他為真
用 bool() 函數來查看一個數據會升豎被判斷為真還是假
Python中有三種布爾表達式運算符:
x and y (兩者都)
x or y (兩者的其中之一)
not x (不)
not True就等於False,not False就等於True
實例:
True
False
True
False
布爾值操作符優先順序為 not >and> or
x是True,無論y and z 的結果是什麼,這個語句的沖轎結果都是True,這就是短路保護,也叫說惰性計算,懶得計算後面的。
其實記得布爾值操作符優先順序為 not >and> or即可。
㈥ Python語法小記憶
Python 中的字元串還支持轉義字元。所謂轉義字元是指使用反斜杠「\」對一些特殊字元進行轉義。
轉義字元說明
\ 續行符
\n 換行符
\0 空
\t 水平制困塌表符,用於橫向跳到下一製表位
\'' 雙引號
\' 單引號
\\ 一個反斜杠
\f 換頁
\0dd 八進制數,dd 代表字元,如\012 代表換行
\xhh 十六進制數,hh 代表字元,如\x0a 代表換行
在Python 中,提供了如下表所示的函數進行數據類型的轉換。
函數作用
int(x) 將x 轉換成整數類型
float(x) 將x 轉換成浮點數類型
complex(real [,imag]) 創建一個復數
str(x) 將x 轉換為字元串
repr(x) 將x 轉換為表達式字元串
eval(str) 計算在字元串中的有效Python 表達式,並返回一個對象
chr(x) 將整數x 轉換為一個字元
ord(x) 將一個字元x 轉換為它對應的整數值
hex(x) 將一個整數x 轉換為一個十六進制字元串
oct(x) 將一個整數x 轉換為一個八進制的字元串
賦值運算符主要用來為變數等賦值。使用時,可以直接把基本賦值運算符「=」右邊的值賦給左邊的變數,也可以進行某些運算後再賦值給左邊的變數。在Python 中常用的賦值。
運算符如下表所示。
運算符說明舉例展開形式
= 簡單的賦值運算x=y x=y
+= 加賦值x+=y x=x+y
-= 減賦值x-=y x=x-y
*= 乘賦值x*=y x=x*y
/= 除賦值x/=y x=x/y
%= 取余數賦值x%=y x=x%y
**= 冪賦值x**=y x=x**y
//= 取整除賦值x//=y x=x//y
比較運算符,也稱關系運算符槐談,用於對變數或表達式的結果進行大小、真假等比較,如果比較結果為真,則返回True,如果為假,則返回False。比較運算符通常用在條件語句中作為判斷的依據。Python 中的比較運算符如下表所示。
運算符作用舉例結果
> 大於'a' > 'b' False
< 小於156 < 456 True
== 等於'c' == 'c' True
!= 不等汪明圓於'y' != 't' True
>= 大於或等於479 >= 426 True
<= 小於或等於62.45 <= 45.5 False
邏輯運算符是對真和假兩種布爾值進行運算,運算後的結果仍是一個布爾值,Python中的邏輯運算符主要包括and(邏輯與)、or(邏輯或)、not(邏輯非)。
運算符含義用法結合方向
and 邏輯與op1 and op2 從左到右
or 邏輯或op1 or op2 從左到右
not 邏輯非not op 從右到左
所謂運算符的優先順序,是指在應用中哪一個運算符先計算,哪一個後計算,與數學的四則運算應遵循的「先乘除,後加減」是一個道理。
下表按從高到低的順序列出了運算符的優先順序。同一行中的運算符具有相同優先順序,此時它們的結合方向決定求值順序。
運算符說明
** 冪
~、+、- 取反、正號和負號
*、/、%、// 算術運算符
+、- 算術運算符
<<、>> 位運算符中的左移和右移
& 位運算符中的位與
^ 位運算符中的位異或
| 位運算符中的位或
<、<=、>、>=、!=、== 比較運算符
在Python 中,使用內置函數input()可以接收用戶的鍵盤輸入。input()函數的基本用法如下:
variable = input("提示文字")
其中,variable 為保存輸入結果的變數,雙引號內的文字用於提示要輸入的內容。
默認的情況下,在Python中,使用內置的print()函數可以將結果輸出到IDLE或者標准控制台上。其基本語法格式如下:
Print(輸出內容)
其中,輸出內容可以是數字和字元串(字元串需要使用引號括起來),此類內容將直接
輸出,也可以是包含運算符的表達式,此類內容將計算結果輸出。
㈦ python中邏輯運算符和jsc語言有什麼區別
在 Python 中,邏輯運算符和 javaScript 中的 if 語句類似,都是用來控製程序流程的。但是,在 Python 中,邏輯運算符的優先順序比 JavaScript 中的 if 語句低,因此在某些情況下,Python 中的邏輯運算符可能會比 JavaScript 中的 if 語句更快。
例如,在 Python 中,可以使用 and 運算符來組合多個條件,而 JavaScript 中的 if 語句需要使用 && 運算符來組合多個條件。此外,Python 中的 not 運算符可以用來取反一個條件,而 JavaScript 中的 ! 運算符可以用來取反枯茄一個條件。
在 Python 中,可以使用 not 運算符來取反一個條件,例如:
python
x = 5
if x > 0:
print("x is positive")
else:
print("x is zero or negative")
在 JavaScript 中,可以使用 ! 運算符來取反一個條件,例如:
javascript
let x = 5;
if (x > 0) {
console.log("x is positive");
} else {
console.log("x is zero or negative");
}
在 Python 中,可以使用 not 運算符來取反一個條件,例如:
python
x = 5
if x > 0:
print("x is positive")
else:
print("x is zero or negative")
在 JavaScript 中,可以使用 ! 運算符來取反一個條件,例如:沒明察
javascript
let x = 5;
if (x > 0) {
console.log("x is positive");
} else {
console.log("x is zero or negative");
}
總槐悄的來說,Python 和 JavaScript 在邏輯運算符和條件語句方面有一些不同之處,但是在某些情況下,Python 中的邏輯運算符可能會比 JavaScript 中的 if 語句更快。
㈧ python 中的.是什麼意思
Python中的//是向下取整的激源意思。
a//b,應該是對除以b的結果向負無窮方向取整後的數
5//2=2(2.5向負無窮方向取整為2),同時-5//2=-3(-2.5向負無窮方向取整為-3)
/與//的區別
在Python中/表示浮點整除法,返回浮點宏鉛塵結果,也就是結果為蔽禪浮點數;而//在Python中表示整數除法,返回大於結果的一個最大的整數,意思就是除法結果向下取整。
㈨ Python語言中,當 a=4, b=2 時, not(a=b) 的值是
在Python中,賦值操作符「=」的優先順序比邏輯運算符「not」要低,所以 not(a=b) 相當於 not(True),因為賦值操作 b=2 返回的值是被賦的值 2,這個值被轉化為True,因此 a=b 的返回值為True,再山孝瞎加上慎脊 not 對 True 取反的操作,結果為 False。所以當 a=4, b=2 時,逗空not(a=b) 的值是 False。
㈩ Python運算符優先順序規則有哪些
以下運算符優先順序順序依次遞增:
Lambda#運算優先順序最低
邏輯運算符:or
邏輯運算符:and
邏輯運算符:not
成員測試:in,notin
同一性測試:is,isnot
比較:<,<=,>,>=,!=,==
按位或:|
按位異或:^
按位與:&
移位:<<,>>
加法與減法:+,-
乘法、除法與取余:*,/,%
正負號:+x,-x