Python基础概念_3_操作符与表达式
操作符與表達(dá)式
4 操作符與表達(dá)式
我們知道程序其實(shí)是代碼段的組合,就像我們寫的作文是一個(gè)個(gè)的段落堆積起來的,每一個(gè)段落又由句子組成,句子又包含“主謂賓定狀補(bǔ)”。本章我們就來講講程序里的“句子”。
4.1?操作符
操作符是用于告訴解釋器執(zhí)行特定的數(shù)學(xué)或邏輯運(yùn)算的符號(hào)表。這里最最容易理解的就數(shù)字運(yùn)算符比如:+、-、*、/。Python支持的操作符有以下類型:
?? 算術(shù)運(yùn)算符
?? 比較(關(guān)系)運(yùn)算符
?? 賦值運(yùn)算符
?? 邏輯運(yùn)算符
?? 位運(yùn)算符
?? 會(huì)員操作符
?? 標(biāo)識(shí)操作符
以下我們通過表格形式演示這些操作符的使用:
4.1.1?算術(shù)運(yùn)算符
| 操作符 | 描述 | 例子 | 代碼示例 |
| + | 加法:左側(cè)操作數(shù)加右側(cè)操作數(shù) | a + b | 4+6 |
| - | 減法:左側(cè)操作數(shù)右側(cè)操作數(shù) | a - b | 10-20 -10 |
| * | 乘法:左側(cè)操作數(shù)乘右側(cè)操作數(shù) | a * b | 10*2 20 |
| / | 除以:左側(cè)操作數(shù)除以右側(cè)操作數(shù) | b / a | 6/2 3 |
| % | 取模:左側(cè)操作數(shù)除右側(cè)操作數(shù)的余值 | b % a | 5%2 1 |
| ** | 冪運(yùn)算- 執(zhí)行對(duì)操作指數(shù)(冪)的計(jì)算,操作符前是底數(shù),后是指數(shù) | a**b | 2**3 8 |
| // | 地板除:左側(cè)操作數(shù)除右側(cè)操作數(shù)得到的 一個(gè)整數(shù)或則尾數(shù)帶0的浮點(diǎn)數(shù)(這個(gè)數(shù)字乘以右操作數(shù)最接近左側(cè)操作符) | a//b | 9.9//2.0 4.0 9.1//2.3 3.0 9.2//2.3 4.0 9//2 4 |
| - | 負(fù)數(shù):是一個(gè)數(shù)的負(fù)數(shù) | -a | -1 1 --1 1 |
4.1.2?比較運(yùn)算符
| 運(yùn)算符 | 描述 | 示例 | 代碼示例 |
| == | 等于:判斷兩個(gè)操作數(shù)的值是否相等,相等則返回True(真)反則則反。 | a==b | 2==2 True |
| != | 不等于:判斷兩個(gè)操作數(shù)的值是否不等,不等則返回True(真)反則則反。 | a!=b | 2!=3 True |
| >? | 不于:判斷左側(cè)操作數(shù)是否相等大于右側(cè)操作數(shù),大于則返回True(真)反則則反。 | a>b | 2>3 False |
| <? | 小于:判斷左側(cè)操作數(shù)是否相等小于右側(cè)操作數(shù),小于則返回True(真)反則則反。 | a<b | 2<3 True |
| >= | 大于等于:判斷左側(cè)操作數(shù)是否相等大于等于右側(cè)操作數(shù),大于等于則返回True(真)反則則反 | a>=b | 2>=3 False |
| <= | 小于等于:判斷左側(cè)操作數(shù)是否相等小于等于右側(cè)操作數(shù),小于等于則返回True(真)反則則反 | a<=b | 2<=3 True |
4.1.3?賦值運(yùn)算符
| 運(yùn)算符 | 描述 | 示例 | 運(yùn)算符 |
| = | 賦值:將右側(cè)操作數(shù)賦值給左側(cè)的操作數(shù) | c = a + b | c=2+3 print(c) 5 |
| += | 加賦值:加賦值操作符,左側(cè)操作數(shù)與右側(cè)操作數(shù)和的結(jié)果再賦給左側(cè)操作數(shù) | c += a 注: 相當(dāng)于c = c + a | c=1 c+=2 print(c) 3 |
| -= | 減賦值:減賦值操作符,左側(cè)操作數(shù)與右側(cè)操作數(shù)差的結(jié)果再賦給左側(cè)操作數(shù) | c -= a? | c=1 c-=2 print(c) -1 |
| *= | 乘賦值:乘賦值操作符,左側(cè)操作數(shù)與右側(cè)操作數(shù)乘的結(jié)果再賦給左側(cè)操作數(shù) | c *= a 注:相當(dāng)于c =c *a | c=2 c*=3 print(c) 6 |
| /= | 除賦值:除賦值操作符,左側(cè)操作數(shù)與右側(cè)操作數(shù)相除的結(jié)果再賦給左側(cè)操作數(shù) | c /= a? 注:相當(dāng)于c=c/a | c=6 c/=2 print(c) 3 |
| %= | 模賦值:模賦值操作符,左側(cè)操作數(shù)與右側(cè)操作數(shù)模的結(jié)果再賦給左側(cè)操作數(shù) | c %= a 注:相當(dāng)于c =c %a | c=5 c%=2 print(c) 1 |
| **= | 冪賦值:冪賦值操作符,左側(cè)操作數(shù)的右側(cè)操作數(shù)次冪的結(jié)果再賦給左側(cè)操作數(shù) | c **= a? 注:相當(dāng)于c =c**a | c=2 c**3 print(c) 8 |
| //= | 地板除賦值:模賦值操作符,左側(cè)操作數(shù)與右側(cè)操作數(shù)地板除的結(jié)果再賦給左側(cè)操作數(shù) | c //= a? 注:相當(dāng)于c = c // a | c=9.1 c//2.3 print(c) 3.0 |
4.1.4?邏輯運(yùn)算符
| 運(yùn)算符 | 描述 | 示例 | 運(yùn)算符 |
| and | 與:如果兩個(gè)操作數(shù)都是真的則真。反之則反。 | a and b | 1 and 0 (1>2) and (2<3) False |
| or | 或:如果有兩個(gè)操作數(shù)有一個(gè)真則真。都假則為假 | a or b | 1 or 0 1 (1>2) or 2<3) True |
| not | 非:對(duì)邏輯運(yùn)算符取反,真的反為假,假的反為真。 | not a | not 0 True not 1 False not (1>2) True |
4.1.5?位運(yùn)算符
在演示位運(yùn)算符號(hào)前,我們先假設(shè)有兩個(gè)數(shù) a =60、b=13; 它們以二進(jìn)制標(biāo)識(shí)如下:
a的二進(jìn)制結(jié)構(gòu)0011 1100
二進(jìn)制轉(zhuǎn)十進(jìn)制:0*20+0*21+1*22+1*23+1*24+1*25?
即0*2**0+0*2**1+1*2**2+1*2**3+1*2**4+1*2**5
b的二進(jìn)制結(jié)構(gòu)0000 1101
二進(jìn)制轉(zhuǎn)十進(jìn)制:1*20+0*21+1*22+1*23?
即1*2**0+0*2**1+1*2**2+1*2**3
那么
a)? a&b
a&b = 0000 1100是怎么運(yùn)算的呢?
運(yùn)算詳解:a和b的二進(jìn)制對(duì)應(yīng)位兩兩取與。
a)? a|b
同理a|b是a和b的二進(jìn)制對(duì)應(yīng)位兩兩或,即得到a|b=0011 1101
b)? a^b
這里是異或,即a和b的二進(jìn)制對(duì)應(yīng)位相同的則返回0,不同則為1,所以a^b = 0011 0001
c)? ~a
這里是取反,即a的二進(jìn)制對(duì)應(yīng)位取反。所以~a? = 1100 0011
d)? a<<2
這里是左位移符號(hào),即a的二進(jìn)制都向右移動(dòng)二位。所以是a<<2=2a)? a>>2
這里是右位移符號(hào),即a的二進(jìn)制都向左移動(dòng)二位。所以是a>>2=15
注:參考e)即可推斷出該值。
| 操作符 | 描述 | 示例 | 代碼示例 |
| & | 位與:二進(jìn)制對(duì)應(yīng)位進(jìn)行與操作 | (a & b) = 12 即 0000 1100 | a=60 b=13 a&b 12 |
| | | 位或:二進(jìn)制對(duì)應(yīng)位進(jìn)行或操作 | (a | b) = 61 即 0011 1101 | a=60 b=13 a|b 61 |
| ^ | 位異或:二進(jìn)制對(duì)應(yīng)位進(jìn)行異或操作。 | (a ^ b) = ?49 即 ?0011 0001 | a=60 b=13 a^b 49 |
| ~ | 位取反:二進(jìn)制對(duì)應(yīng)位進(jìn)行取反操作。 | (~a ) = ?-61 即 1100 0011以2的補(bǔ)碼形式由于帶符號(hào)二進(jìn)制數(shù)。 | a=60 ~a -61 |
| <<? | 左移位:左操作數(shù)的值左移由右操作數(shù)指定的位數(shù)。 | a << 2 = 240 即 1111 0000 | a<<2 240 |
| >>? | 右移位:右操作數(shù)的值右移由右邊操作數(shù)指定的位數(shù)。 | a >> 2 = 15 即 0000 | a>>2 15 |
4.1.6?會(huì)員操作符
| 操作符 | 描述 | 示例 | 代碼示例 |
| in | 成員存在:判斷一個(gè)元素是否存在某個(gè)數(shù)據(jù)結(jié)構(gòu)內(nèi),存在返回True,否則False。 | x in y | 'python' in ['python','xiaodao'] True |
| not in | 成員不存在:判斷一個(gè)元素是否存在某個(gè)數(shù)據(jù)結(jié)構(gòu)內(nèi),不存在返回True,否則False。 | x not in y | 'python' not in ['python','xiaodao'] False |
4.1.7?標(biāo)識(shí)操作符
| 運(yùn)算符 | 描述 | 例子 | 運(yùn)算符 |
| is | 同一運(yùn)算符:判斷兩個(gè)變量是不是一個(gè),是則返回True,否則為False。 | x is y | x = y = [4,5,6] z = [4,5,6] x is y True |
| is not | 非同一運(yùn)算符:判斷兩個(gè)變量是不是一個(gè),不是則返回True,否則為False。 | x is not y | x = y = [4,5,6] z = [4,5,6] x is not z True |
4.2?操作符優(yōu)先級(jí)
在開始本章節(jié)之前讓我們先回顧一下兩頭小羊過河的故事:
一天,兩只小羊在獨(dú)木橋前相遇,小白羊說:“讓我先過去!”
“不對(duì),應(yīng)該讓我先過去!”小黑羊大叫道。
小白羊很生氣,它用角去頂小黑羊,小黑羊也不甘示弱,沖了上去,兩只羊互不相讓。
小白羊想:我的毛潔白無(wú)瑕,比你高貴,應(yīng)該讓我先過去。小黑羊想:我的力氣比你大,肯定能戰(zhàn)勝你。“撲通”一聲,兩只小羊同時(shí)掉下了水。
這個(gè)故事當(dāng)然是教育我們要謙讓,引入這個(gè)故事是要提到另外一點(diǎn):優(yōu)先級(jí)。通過上面章節(jié)的學(xué)習(xí)我們了解了7類常用的操作符,顯然這些操作符是組合在一起用的。那么哪些操作符先執(zhí)行,哪些后執(zhí)行呢?我們來看Python里對(duì)操作符優(yōu)先級(jí)的定義:
運(yùn)算符通常是從左往右結(jié)合的,例如,有相同優(yōu)先級(jí)的運(yùn)算符按照從左向右的順
序計(jì)算。例如,2+3+4 的順序是(2+3)+4。一些運(yùn)算符,如賦值運(yùn)算符有從右向左的
結(jié)合順序,例如a=b=c 被當(dāng)成a=(b=c) 。
操作符優(yōu)先級(jí)由高到低排列見下表:
| 運(yùn)算符 | 描述 | 程序示例 |
| ** | 冪 | 2+2**6/4 18.0 6.0 |
| ~ + - | 補(bǔ)碼,正負(fù)號(hào) | |
| * / % // | 乘,除,取模和地板除 | |
| + - | 加法和減法 | |
| >> << | 左,右按位轉(zhuǎn)移 | |
| & | 位與 | |
| ^ | | 按位異'或`'和定期`或' | |
| <= < > >= | 比較運(yùn)算符 | |
| <> == != | 等式運(yùn)算符 | |
| = %= /= //= -= += *= **= | 賦值運(yùn)算符 | |
| is is not | 標(biāo)識(shí)運(yùn)算符 | |
| in not in | 成員運(yùn)算符 | |
| not or and | 邏輯運(yùn)算符 |
注:當(dāng)然我們可以通過()來改變優(yōu)先級(jí)
4.3?表達(dá)式
表達(dá)式就像我們作文中的加了修飾的詞,比如晴朗的天空。它一般有變量、操作符組成。比如我們計(jì)算一個(gè)矩形的面積可以這樣做:
代碼示例:
length = 5
breadth = 2
area = length * breadth
print('面積是', area)
面積是 10
print('周長(zhǎng)是',2 * (length+ breadth))
周長(zhǎng)是 14
4.4?總結(jié)
前面看到了如何使用操作符符,操作數(shù)和表達(dá)式,這是程序的最為基本的構(gòu)成。接下來,將會(huì)看到如何通過語(yǔ)句在程序中使用這些內(nèi)容。
?總結(jié)
以上是生活随笔為你收集整理的Python基础概念_3_操作符与表达式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python基础概念_2_基础概念
- 下一篇: Python基础概念_4_控制流程