1. 程式人生 > 實用技巧 >Python運算子

Python運算子

算術運算子

算數運算子包含有+(加)、-(減)、*(乘)、/(除)、//(地板除)、**(冪運算)、%(取餘)

/ (結果為小數)

var1 = 2
var2 = 2
res = var1 / var2
print(res)

//

  • 被除數 ➗ 除數 = 商
  • 注意點:如果被除數或者除數是小數,那麼在正常結果後加上.0變成小數
var1 = 2
var2 = 2.0
res = var1 // var2
print(res)

%

var1 = 7
var2 = 4
res = var1 % var2
print(res) # 3

var1 = -7
var2 = 4
res = var1 % var2
print(res) # -3 + 4 = 1

var1 = 7
var2 = -4
res = var1 % var2
print(res) # 3 + (-4) = -1

var1 = -7
var2 = -4
res = var1 % var2
print(res) # -3

**

res = 3 ** 2
print(res)

比較運算子

  • 比較運算子包含有>(大於)、<(小於)、>=(大於等於)、<=(小於等於)、==(等於)、!=(不等於)
  • 比較運算子的結果要麼是True,要麼是False,只有兩個值

==

# 這個符號是在做比較,比較==兩邊的數值是否一樣
res = 5 == 9
print(res)

賦值運算子

賦值運算子包含有=、+=、-=、*=、/=、//=、%=、**=

= 將右側的值賦值給左側變數

a = 5 <= 3
print(a)

*=

"""
var1 *= var2 相當於 var1 = var1 * var2
"""
var1 *= var2
print(var1)

成員運算子

  • 成員運算子包含有in、not in(針對於容器型資料)
  • in或not in是判斷某個值是否包含在(或不在)一個容器型別資料當中
  • 字串判斷時,必須是連續的片段
  • 針對於字典,判斷的是字典的鍵,而不是字典的值
strvar = "今天天氣要下雨,趕緊回家收衣服"
res = "今" in strvar
res = "趕回" in strvar
print(res)

身份運算子

身份運算子包含有is和is not(檢測兩個資料id是否相同),可參考python3.6變數快取機制

邏輯運算子

邏輯運算子包含有and、or、not

and 邏輯與

"""全真則真,一假則假"""
res = True and True    # True
res = True and False   # False
res = False and True   # False
res = False and False  # False
print(res)

or 邏輯或

"""一真則真,全假則假"""
res = True or True    # True
res = False or True   # True
res = True or False   # True 
res = False or False  # False
print(res)

not 邏輯非

res = not True
res = not False
print(res)

邏輯短路的兩種情況

如果短路,無論後面的表示式是True還是False都已經無法改變結果,後面的程式碼不執行

  • (1) True or 表示式
  • (2) False and 表示式

位運算子

位運算子包含有&(按位與)、|(按位或)、^(按位異或)、<<(左移)、>>(右移)、~(按位非)

& 按位與

var1 = 19
var2 = 15
res = var1 & var2
"""
000 ... 10011
000 ... 01111
000 ... 00011 => 3

^ 按位異或

"""
兩個值不相同,返回True
兩個值相同,返回False
"""
var1 = 19
var2 = 15
res = var1 ^ var2
"""
000 ... 10011
000 ... 01111
000 ... 11100
"""

<< 左移與>> 右移

"""
左移:m乘n的n次冪
右移:m地板除n的n次冪
"""
# res = m << n
res = 5 << 3 # 40
res = 5 >> 1 # 2
print(res)

~ 按位非

# 針對於補碼進行操作,按位取反,包含每一位
# 計算公式:-(n+1)
res = ~19
print(res)
"""
原碼:000 ... 10011
反碼:000 ... 10011
補碼:000 ... 10011

補碼:   000 ... 10011
按位非: 111 ... 01100

補碼:111 ... 01100
反碼:100 ... 10011
原碼:100 ... 10100 => -20
"""

總結

個別運算子

  • 運算子優先順序最高: **
  • 運算子優先順序最低: =
  • () 可以提升優先順序

同一種類運算子

  • 算術運算子: 乘除 > 加減
  • 邏輯運算子: () > not > or
  • 位運算子: (<<、>>) > & > ^ > |

整體排序

算數運算子 > 位運算子 > 比較運算子 > 身份運算子 > 成員運算子 > 邏輯運算子 > 賦值運算子