Python中的運算符
運算符
運算符是一些特殊的符號,主要用於數學計算、比較大小和邏輯運算等;使用運算符將不同類型的數據按照一定的規則鏈接起來的式子稱爲表達式。運算符分類如下:
1)算數運算符:即四則運算及其相關運算
運算符 | 說明 | 示例 | 結果 |
+ | 加 | 2+5 | 7 |
- | 減 | 5-3 | 2 |
* | 乘 | 5*2.4 | 12.0 |
/ | 除 | 9/4 | 2.25 |
% | 取餘數,即返回除法的餘數 | 9%4 | 1 |
// | 取整除,即返回商的整數部分 | 9%4 | 2 |
** | 冪,返回x的y詞放 | 2**5 | 32(2的4次方) |
- 注意點1:在求餘時(%)如果除數是負數,則取得的結果也是負數
- 注意點2:在使用除法( /或者// )運算符和求餘運算符(%)時,除數不能爲零
print(' + :'+ str(7 + 2)) #加 print(' - :'+ str(5 - 3)) #減 print(' * :'+ str(5 * 2.4)) #乘 print(' / :'+ str(9 / 4)) #除 print(' % :'+ str(9 % 4)) #取餘 print(' // :'+ str(9 // 4)) #整除 print(' ** :'+ str(2 ** 5)) #冪
2)賦值運算符:主要是爲變量賦值;右邊的值賦給左邊的變量, 也可以進行某些運算過後在賦給左邊的變量。
運算符 | 說明 | 示例 | 展開式 |
= | 簡單的賦值運算 | a = b | a = b |
+= | 加 賦值 | a += b | a =a + b |
-= | 減 賦值 | a -= b | a =a - b |
*= | 乘 賦值 | a *= b | a =a * b |
/= | 除 賦值 | a /= b | a =a / b |
%= | 取餘數 賦值 | a %= b | a =a % b |
**= | 冪 賦值 | a **= b | a =a ** b |
//= | 取整除 賦值 | a //= b | a =a // b |
num = 2
print('num = ' + str(num)) #簡單的賦值運算
num += 1
print('num += 1 ; num = ' + str(num)) #加 賦值
num -=1
print('num -= 1 ; num = ' + str(num)) #減 賦值
num *= 2
print('num *= 2 ; num = ' + str(num)) #乘 賦值
num /= 2
print('num /= 2 ; num = ' + str(num)) #除 賦值
num %= 3
print('num %= 3 ; num = ' + str(num)) #取餘 賦值
num **= 3
print('num **= 3 ; num = ' + str(num)) #冪 賦值
num //= 3
print('num //= 3 ; num = ' + str(num)) #整除 賦值
3)比較(關係)運算符:比較運算符,又被稱之爲關係運算符,用於對變量或者表達式的結果進行大小、真假的比較。若比較結果爲真,則返回True,反之返回False。比較一般以條件語句內容作爲判斷依據。
運算符 | 說明 | 示例 | 結果 |
> | 大於 | 'a'>'b' | False |
< | 小於 | 156<828 | True |
== | 等於 | 'c'='c' | True |
!= | 不等於 | 'y'!='t' | True |
>= | 大於等於 | 479>=426 | True |
<= | 小於等於 | 85.95<=64.28 | False |
print('a'>'b')
print(156<828)
print('c'=='c')
print('y'!='t')
print(479>=426)
print(85.95<=64.28)
4) 邏輯運算符:
假定某購物平臺:在每星期的週三凌晨24點到1點、週六下午兩點到三點,對零食類進行顯示折扣秒殺活動,那麼想要參與秒殺活動的顧客,就需要滿足過冬規定的時間條件:週三且在時間段0:00AM~1:00AM內或者週六且在時間段14:00PM~15:00PM內;這裏用到的就是所謂邏輯關係。而在Python中也提供了這樣的邏輯運算符進行相關邏輯運算。
邏輯運算符對真假兩種布爾值進行運算,運算後的結果仍是一個布爾值:其中主要的邏輯運算符包括and(邏輯與)、or(邏輯或)、not(邏輯非)。
運算符 | 說明 | 用法 | 結合方向 |
and | 邏輯與 | Op1 and Op2 | 左-->右 |
or | 邏輯或 | Op1 or Op2 | 左-->右 |
not | 邏輯非 | not Op | 右-->左 |
使用邏輯雲端福進行邏輯運算符 進行邏輯運算的結果
表達式1 | 表達式2 | 表達式1 and 表達式2 | 表達式1 or 表達式2 | not 表達式 |
True | True | True | True | False |
True | False | False | True | False |
False | False | False | False | True |
False | True | False | True | True |
5)位運算符:位運算符用於對二進制數進行計算,因此,在執行位運算前,要想將需執行位運算的數據轉換爲二進制數
- '位與'運算
- 符號:&
- 運算法則:兩個操作數的二進制表示,只有對應位都是1,結果爲1,否則爲0.
操作數1 | 操作數2 | 位與運算( & ) | ||
第 一 組 |
十進制 | 4 | 8 | 0 |
二進制 | 0000 0000 0000 0100 | 0000 0000 0000 1000 | 0000 0000 0000 0000 | |
第 二 組 |
十進制 | 8 | 12 | 8 |
二進制 | 0000 0000 0000 1000 | 0000 000 0000 1100 | 0000 0000 0000 1000 |
#位與運算
print("位與運算")
print(4&8)
print(8&12)
- '位或'運算
- 符號:|
- 運算法則:兩個操作數的二進制表示,只有對應位都是0,結果爲0,否則爲1.
操作數1 | 操作數2 | 位或運算( | ) | ||
第 一 組 |
十進制 | 4 | 8 | 12 |
二進制 | 0000 0000 0000 0100 | 0000 0000 0000 1000 | 0000 0000 0000 1100 | |
第 二 組 |
十進制 | 8 | 12 | 12 |
二進制 | 0000 0000 0000 1000 | 0000 000 0000 1100 | 0000 0000 0000 1100 |
#位或運算
print("位或運算")
print(4|8)
print(8|12)
- '位異或'運算
- 符號:^
- 運算法則:兩個操作數的二進制表示,只有對應位相同(同爲1或同爲0),結果爲0,否則爲1.
操作數1 | 操作數2 | 位異或運算( ^ ) | ||
第 一 組 |
十進制 | 4 | 8 | 12 |
二進制 | 0000 0000 0000 0100 | 0000 0000 0000 1000 | 0000 0000 0000 1100 | |
第 二 組 |
十進制 | 8 | 12 | 4 |
二進制 | 0000 0000 0000 1000 | 0000 000 0000 1100 | 0000 0000 0000 0100 | |
第 二 組 |
十進制 | 31 | 22 | 9 |
二進制 | 0000 0000 0001 1111 | 0000 000 0001 0110 | 0000 0000 0000 1001 |
#位異或運算
print("位異或運算")
print(4^8)
print(8^12)
print(31^22)
- '位取反'運算
- 符號:~
- 運算法則:在操作數的二進制表示中,將0修改爲1,1修改爲0.
操作數(十進制) | 操作數(二進制) | 操作數取反(二進制) | 操作數取反(十進制) |
4 | 0000 0000 0000 0100 | 1111 1111 1111 1011 | -5 |
8 | 0000 0000 0000 1000 | 1111 1111 1111 0111 | -9 |
12 | 0000 0000 0000 1100 | 1111 1111 1111 0011 | -12 |
#位取反運算
print("位取反運算")
print(~4)
print(~8)
print(~12)
- 左移運算符
- 符號:<<
- 運算法則:講一個二進制操作數,向左移動指定的位數
- 左邊(高位端)溢出的位被丟棄
- 右邊(低位端)空出的位用0 補充
- 左移位運算相當於乘以2的n次冪
操作數 | |||
十進制 | 48 | 31 | |
二進制 | 00110000 | 00011111 | |
左移(<<) 1位 |
二進制 | 01100000 | 00111110 |
十進制 | 96 | 62 | |
左移(<<) 2位 |
二進制 | 11000000 | 01111100 |
十進制 | 192 | 124 |
#左移運算符
print('左移運算符')
print('48左移1位:' + str(48<<1))
print('48左移2位:' + str(48<<2))
print('31左移1位:' + str(31<<1))
print('31左移2位:' + str(31<<2))
- 右移運算符
- 符號:>>
- 運算法則:講一個二進制操作數,向左移動指定的位數
- 右邊(低位端)溢出的位被丟棄
- 左邊(高位端)空出的位,需要填充,填充時:
- 如果最高位是0(正數),左側空位填入 0
- 如果最高位是1(負數),左側空位填入 1
- 右移位運算相當於除以2的n次冪
操作數 | ||||
十進制 | 48 | 60 | -80 | |
二進制 | 00110000 | 00111100 | 10100000 | |
右移(>>) 1位 |
二進制 | 00011000 | 00011110 | 11010000 |
十進制 | 24 | 30 | -40 | |
右移(>>) 2位 |
二進制 | 00001100 | 00000111 | 11101000 |
十進制 | 12 | 124 | -20 |
#右移運算符
print('右移運算符')
print('48右移1位:' + str(48>>1))
print('48右移2位:' + str(48>>2))
print('60右移1位:' + str(60>>1))
print('60右移2位:' + str(60>>2))
print('-80右移1位:' + str(-80>>1))
print('-80右移2位:' + str(-80>>2))
PS:由於位移運算速度很快,所以,在程序中遇到表達式乘以或者除以2的n次冪時,一般採用位移運算代替。
6)運算符優先級問題
Python運算符的運算規則:優先級搞得運算先執行,優先級低的運算後執行,同一優先級的操作按照從左到右順序執行。若喲小括號,則括號內運算優先執行。
運算優先級從到低排序如下表所示:
類型 | 說明 |
** | 冪 |
~、+、- | 取反、正號、負號 |
*、/、%、// | 算數運算符:乘、除、取餘、整除 |
+、- |
算數運算符:加、減 |
<<、>> | 位運算符:左移、右移 |
& | 位運算符:位與 |
^ | 位運算符:位異或 |
| | 位運算符::位或 |
<、<=、>、>=、!=、== | 比較運算符 |