Python3 運算符
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 爲 10,b爲 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)