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