04. Python語言的核心編程 · 第四章 運算符細解

1. Python3 運算符

1.1 運算符的概念

  運算符用於執行程序代碼運算,會針對 一個以上操作數項目 來進行運算。例如:2+3,其操作數是 2 和 3,而運算符則是“+”

1.2 運算符的分類

  算術 運算符
  賦值 運算符
  比較 運算符(關係運算符)
    運算符
  身份 運算符
  成員 運算符
  邏輯 運算符
  條件 運算符(三元運算符)

2. Python 算術運算符

  加法 運算符 表現形式: +
  減法 運算符 表現形式: -
  乘法 運算符 表現形式: *
  除法 運算符 表現形式: /
  %  取模,求兩個數相除的 餘數
  //    整除,只會保留計算後的整數位總會返回一個整型
  **  冪運算,求一個值的幾次冪

  假設:變量a爲10,變量b爲21。
在這裏插入圖片描述
  Python 所有算數運算符的操作:

a = 21
b = 10
c = 0
 
c = a + b
print ("c 的值爲:", c)			# c 的值爲: 31
 
c = a - b
print ("c 的值爲:", c)			# c 的值爲: 11
 
c = a * b
print ("c 的值爲:", c)			# c 的值爲: 210
 
c = a / b
print ("c 的值爲:", c)			# c 的值爲: 2.1
 
c = a % b
print ("c 的值爲:", c)			# c 的值爲: 1
 
# 修改變量 a 、b 、c
a = 2
b = 3
c = a**b 
print ("c 的值爲:", c)			# c 的值爲: 8
 
a = 10
b = 5
c = a//b 
print ("c 的值爲:", c)			# c 的值爲: 2

  

3. Python 賦值運算符

  賦值運算符算術表達式特殊寫法。舉例說明: x = x + 3 其實是和 x += 3 是一樣的
  賦值運算多運用在 循環函數(while、for) 運算。

    =  
    +=  (x+= 3 相當於 x = x + 3 )
    -=  (x -= 3 相當於 x= x - 3 )
    *=  (x *= 3 相當於 x = x* 3 )
    **=  (x **= 3 相當於 x = x ** 3 )
    /=  (x /= 3 相當於 x = x/ 3 )
    //=  (x //= 3 相當於 x = x // 3 )
    %=  (x %= 3 相當於 x= x % 3 )
    :=  

  假設:變量a爲10,變量b爲20:
在這裏插入圖片描述
  Python 所有賦值運算符的操作:

a = 21
b = 10
c = 0
 
c = a + b
print ("c 的值爲:", c)			# c 的值爲: 31
 
c += a
print ("c 的值爲:", c)			# c 的值爲: 52
 
c *= a
print ("c 的值爲:", c)			# c 的值爲: 1092
 
c /= a 
print ("c 的值爲:", c)			# c 的值爲: 52.0
 
c = 2
c %= a
print ("c 的值爲:", c)			# c 的值爲: 2
 
c **= a
print ("c 的值爲:", c)			# c 的值爲: 2097152
 
c //= a
print ("c 的值爲:", c)			# c 的值爲: 99864

  

4. Python 比較運算符

  比較運算符用來比較兩個值之間的關係總會返回一個布爾值。如果關係成立返回 True,否則返回 False

    ==  比較兩個對象的值 是否相等
    != 比較兩個對象的值 是否不相等
    >  比較左側值是否大於右側值;
    <  比較左側值是否小於右側值;
    >=  比較左側的值是否大於或等於右側的值;
    <=  比較左側的值是否小於或等於右側的值。

  假設:變量a爲10,變量b爲20:
在這裏插入圖片描述
  Python 所有比較運算符的操作:

a = 21
b = 10
c = 0
 
if ( a == b ):
   print ("a 等於 b")
else:
   print ("a 不等於 b")				# a 不等於 b
 
if ( a != b ):
   print ("a 不等於 b")
else:
   print ("a 等於 b")				# a 不等於 b
 
if ( a < b ):
   print ("a 小於 b")
else:
   print ("a 大於等於 b")			# a 大於等於 b
 
if ( a > b ):
   print ("a 大於 b")
else:
   print ("a 小於等於 b")			# a 大於 b
 
# 修改變量 a 和 b 的值
a = 5;
b = 20;
if ( a <= b ):
   print ("a 小於等於 b")
else:
   print ("a 大於  b")				# a 小於等於 b
 
if ( b >= a ):
   print ("b 大於等於 a")
else:
   print ("b 小於 a")				# b 大於等於 a

  

5. Python 位運算符

  Python 位運算符是把數字看作二進制來進行計算的。Python 中的按位運算法則如下:

  下表中 變量 a 爲 60,變量b 爲 13 二進制格式如下:

a = 0011 1100

b = 0000 1101

-----------------

a&b = 0000 1100

a|b = 0011 1101

a^b = 0011 0001

~a  = 1100 0011

  Python 位運算符:
在這裏插入圖片描述
  Python 所有位運算符的操作:

a = 60         		   # 60 = 0011 1100 
b = 13         		   # 13 = 0000 1101 
c = 0
 
c = a & b;     		   # 12 = 0000 1100
print ("1 - c 的值爲:", c)
 
c = a | b;      	  # 61 = 0011 1101 
print ("2 - c 的值爲:", c)
 
c = a ^ b;    	      # 49 = 0011 0001
print ("3 - c 的值爲:", c)
 
c = ~a;         	  # -61 = 1100 0011
print ("4 - c 的值爲:", c)
 
c = a << 2;    	      # 240 = 1111 0000
print ("5 - c 的值爲:", c)
 
c = a >> 2;    	      # 15 = 0000 1111
print ("6 - c 的值爲:", c)

  

6. Python 身份運算符

  身份運算符用於比較兩個對象的存儲單元
  is  比較兩個對象 是否是同一個對象,比較的是 對象的id
  is not  比較兩個對象 是否不是同一個對象,比較的是 對象的id
  
  Python 身份運算符:
在這裏插入圖片描述
  注: id() 函數用於獲取對象的內存地址。

  Python 所有身份運算符的操作:

a = 20
b = 20
 
if ( a is b ):
   print ("a 和 b 有相同的標識")
else:
   print ("a 和 b 沒有相同的標識")		# a 和 b 有相同的標識
 
if ( id(a) == id(b) ):
   print ("a 和 b 有相同的標識")
else:
   print ("a 和 b 沒有相同的標識")		# a 和 b 有相同的標識
 
# 修改變量 b 的值
b = 30
if ( a is b ):
   print ("a 和 b 有相同的標識")
else:
   print ("a 和 b 沒有相同的標識")		# a 和 b 沒有相同的標識
 
if ( a is not b ):
   print ("a 和 b 沒有相同的標識")
else:
   print ("a 和 b 有相同的標識")			# a 和 b 沒有相同的標識

  

7. Python 成員運算符

  除了以上的一些運算符之外,Python 還支持成員運算符,測試實例中包含了一系列的成員,包括字符串、列表或元組。
在這裏插入圖片描述
  Python 所有成員運算符的操作:

a = 10
b = 20
list = [1, 2, 3, 4, 5 ];
 
if ( a in list ):
   print ("變量 a 在給定的列表中 list 中")
else:
   print ("變量 a 不在給定的列表中 list 中")		# 變量 a 不在給定的列表中 list 中
 
if ( b not in list ):
   print ("變量 b 不在給定的列表中 list 中")
else:
   print ("變量 b 在給定的列表中 list 中")		# 變量 b 不在給定的列表中 list 中
 
# 修改變量 a 的值
a = 2
if ( a in list ):
   print ("變量 a 在給定的列表中 list 中")
else:
   print ("變量 a 不在給定的列表中 list 中")		# 變量 a 在給定的列表中 list 中 

  

8. Python 邏輯運算符

 6.1 not 邏輯非
  not(邏輯非) 可以對符號 右側 的值進行運算。對於布爾值,非運算會對其進行取反操作;True 變 False,False 變 True

 6.2 and 邏輯與
  and(邏輯與) 可以對符號 兩側 的值進行運算。 只有符號兩側 都爲 True 時,纔會返回 True只要有一個 False 就返回 False
  與運算找 False 的,如果第一個值爲 False ,則 不再看 第二個值。

 6.3 or 邏輯或
  或運算 兩個值中 只要有一個True,就會返回True 。
  或運算 是找True的。

 6.4 非布爾值 的 與或運算
  當我們對非布爾值進行與或運算時,Python 會將其當做布爾值運算,最終會返回原值。

  非布爾值 與運算 的規則:
  與運算是找 False 的,如果第一個值是 False,則不看第二個值。如果第一個值是 False,則直接返回第一個值,否則返回第二個值;

  非布爾值 或運算 的規則:
  或運算是找 True 的,如果第一個值是 True,則不看第二個值。如果第一個值是 True,則直接返回第一個值,否則返回第二個值。

  假設變量 a 爲 10b爲 20
在這裏插入圖片描述
  Python 邏輯運算符的操作:

a = 10
b = 20
 
if ( a and b ):
   print ("變量 a 和 b 都爲 True")
else:
   print ("變量 a 和 b 有一個不爲 True")		# 變量 a 和 b 都爲 True
 
if ( a or b ):
   print ("變量 a 和 b 都爲 True,或其中一個變量爲 True")
else:
   print ("變量 a 和 b 都不爲 True")			# 變量 a 和 b 都爲 True,或其中一個變量爲 True
 
# 修改變量 a 的值
a = 0
if ( a and b ):
   print ("變量 a 和 b 都爲 True")
else:
   print ("變量 a 和 b 有一個不爲 True")		# 變量 a 和 b 有一個不爲 True
 
if ( a or b ):
   print ("變量 a 和 b 都爲 True,或其中一個變量爲 True")
else:
   print ("變量 a 和 b 都不爲 True")			# 變量 a 和 b 都爲 True,或其中一個變量爲 True
 
if not( a and b ):
   print ("變量 a 和 b 都爲 False,或其中一個變量爲 False")
else:
   print ("變量 a 和 b 都爲 True")			# 變量 a 和 b 都爲 False,或其中一個變量爲 False

  

9. Python 條件運算符(三元運算符)

  Python 條件運算的執行模型:
在這裏插入圖片描述
  Python 條件運算的執行過程:
在這裏插入圖片描述

  條件運算符在執行時,會先對條件表達式進行 求值判斷
  如果判斷結果爲True,則執行 語句1,並返回執行結果
  如果判斷結果爲False,則執行 語句2,並返回執行結果
  語法: 語句1 if 條件表達式 else 語句2 。
  
  Python 中 if 語句的一般形式如下所示:

if condition_1:
    statement_block_1		# 如果 "condition_1" 爲 True 將執行 "statement_block_1" 塊語句
elif condition_2:			# 如果 "condition_1" 爲False,將判斷 "condition_2"
    statement_block_2		# 如果"condition_2" 爲 True 將執行 "statement_block_2" 塊語句
else:
    statement_block_3		# 如果 "condition_2" 爲False,將執行"statement_block_3"塊語句

  Python 中用 elif 代替了 else if,所以 if 語句的關鍵字爲:if – elif – else

  注意:
  1、每個條件後面要使用冒號 :,表示接下來是滿足條件後要執行的語句塊。
  2、使用縮進來劃分語句塊,相同縮進數的語句在一起組成一個語句塊。
  3、在Python中沒有switch – case語句。

  

10. Python 運算符的優先級

  以下表格列出了從最高到最低優先級的所有運算符:
在這裏插入圖片描述
  運算符優先級詳細參照表

  Python 所有運算符優先級的操作:

a = 20
b = 10
c = 15
d = 5
e = 0
 
e = (a + b) * c / d       #( 30 * 15 ) / 5
print ("(a + b) * c / d 運算結果爲:",  e)			# (a + b) * c / d 運算結果爲: 90.0
 
e = ((a + b) * c) / d     # (30 * 15 ) / 5
print ("((a + b) * c) / d 運算結果爲:",  e)			# ((a + b) * c) / d 運算結果爲: 90.0
 
e = (a + b) * (c / d);    # (30) * (15/5)
print ("(a + b) * (c / d) 運算結果爲:",  e)			# (a + b) * (c / d) 運算結果爲: 90.0
 
e = a + (b * c) / d;      #  20 + (150/5)
print ("a + (b * c) / d 運算結果爲:",  e)			# a + (b * c) / d 運算結果爲: 50.0

  and 擁有更高優先級:

x = True
y = False
z = False
 
if x or y and z:
    print("Yes")
else:
    print("No")				# Yes

  
  
  
  
  

課後作業:

  1. ‘ax’ < ‘xa’ 輸出的值爲 True 還是 False ?
  2. is 與 == 的區別?
  3. 現在有 a b c 三個變量,三個變量中分別保存有三個數值,請通過條件運算符獲取三個值中的最大值。

  
  
  

參考答案:

# 第一題
TRUE				



# 第二題	答案細節詳見文章的 4. Python 比較運算符 和 6. Python 身份運算符
比較運算符用來比較兩個值之間的關係,總會返回一個布爾值。如果關係成立返回 True,否則返回 False==	比較兩個對象的值是否相等	比較的是對象的 value;	

is	比較兩個對象的值是否是同一個對象	比較的是對象的 id;

對象被賦的值是可變的,不確定的;對象的id是唯一的,不可變更的。


	
# 第三題(方案一)
a,b,c = 1,2,3		

if a > b :
    if a > c :
        print(a)
    else:
        print(c)
else:
    if b > c :
        print(b)
    else:
        print(c)	# c



# 第三題(方案二)
a = int(input('輸入a的值:'))
b = int(input('輸入b的值:'))
c = int(input('輸入c的值:'))

if a > b:
    if a > c:
        print('輸入的 a,b,c 三個值中,最大的值是:a =',a)
    else:
        print('輸入的 a,b,c 三個值中,最大的值是:c =',c)
elif b > c:
    print('輸入的 a,b,c 三個值中,最大的值是:b =',b)
else:
    print('輸入的 a,b,c 三個值中,最大的值是:c =',c)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章