- Python程序設(shè)計案例課堂
- 劉春茂
- 3283字
- 2020-11-28 15:11:22
2.5 運(yùn)算符和優(yōu)先級
在Python語言中,支持的運(yùn)算符包括算術(shù)運(yùn)算符、比較運(yùn)算符、賦值運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符、身份運(yùn)算符和成員運(yùn)算符。
2.5.1 算術(shù)運(yùn)算符
Python語言中常見的算術(shù)運(yùn)算符如表2-1所示。
表2-1 算術(shù)運(yùn)算符

【案例2-1】使用算術(shù)運(yùn)算符(代碼2.1.py)。
x = 4 y = 5 z = 1 #加法運(yùn)算 a = x + y print ("a的值為:", a) #減法運(yùn)算 a =x - y print ("a的值為:", a) #乘法運(yùn)算 a = x * y print ("a的值為:", a) #除法運(yùn)算 a = x / y print ("a的值為:", a) #取模運(yùn)算 a= x % y print ("a的值為:", a) #修改變量x、y、z x = 10 y = 12 z = x**y print ("z的值為:", z) #整除運(yùn)算 X = 15 y = 3 z = x//y print ("z的值為:", z)
保存并運(yùn)行程序,結(jié)果如下:
A的值為: 9 a的值為: -1 a的值為: 20 a的值為: 0.8 a的值為: 4 z的值為: 1000000000000 z的值為: 5
在本案例中,首先定義變量x、y、z并賦值,然后進(jìn)行算術(shù)運(yùn)算,接著修改變量的值,再次進(jìn)行整除運(yùn)算。
2.5.2 比較運(yùn)算符
Python語言支持的比較運(yùn)算符如表2-2所示。
表2-2 比較運(yùn)算符

【案例2-2】使用比較運(yùn)算符(代碼2.2.py)。
x = 15 y = 6 # 判斷變量x和y是否相等 if ( x == y ): print ("x等于y") else: print ("x不等于y") # 判斷變量x和y是否不相等 if ( x ! = y ): print ("x不等于y") else: print ("x等于y") # 判斷變量x是否小于y if ( x < y ): print ("x小于y") else: print ("x大于等于y") # 判斷變量x是否大于y if ( x > y ): print (" x大于y") else: print (" x小于等于y") # 修改變量x和y的值 x = 6 y = 18 # 判斷變量x是否小于等于y if ( x <= y ): print (" x小于等于y") else: print (" x大于 y") # 判斷變量x是否大于等于y if ( y >= x): print (" y大于等于x") else: print (" y小于x")
保存并運(yùn)行程序,結(jié)果如下:
x不等于y x不等于y x大于等于y x大于y x小于等于y y大于等于y
在本案例中,首先定義變量x、y并賦值,然后使用if判斷語句,并結(jié)合比較運(yùn)算符判斷兩個變量的大小關(guān)系。
2.5.3 賦值運(yùn)算符
賦值運(yùn)算符表示將右邊變量的值賦給左邊變量,常見的賦值運(yùn)算符的含義如表2-3所示。
表2-3 賦值運(yùn)算符

【案例2-3】使用賦值運(yùn)算符(代碼2.3.py)。
x = 24 y = 8 z = 6 #簡單的賦值運(yùn)算 z = x + y print ("z的值為:", z) #加法賦值運(yùn)算 z += x print ("z的值為:", z) #乘法賦值運(yùn)算 z *= x print ("z的值為:", z) #除法賦值運(yùn)算 z /= x print ("z的值為:", z) #取模賦值運(yùn)算 z = 12 z %= x print ("z的值為:", z) #冪賦值運(yùn)算 x=3 z **= x print ("z的值為:", z) #取整除賦值運(yùn)算 z //= x print ("z的值為:", z)
保存并運(yùn)行程序,結(jié)果如下:
z的值為:32 z的值為:56 z的值為:1344 z的值為:56.0 z的值為:12 z的值為:1728 z的值為:576
在本案例中,首先定義變量x、y和z并簡單賦值,然后使用各種賦值方式對變量進(jìn)行賦值操作。
2.5.4 邏輯運(yùn)算符
Python支持的邏輯運(yùn)算符如表2-4所示。
表2-4 邏輯運(yùn)算符

【案例2-4】使用邏輯運(yùn)算符(代碼2.4.py)。
a = 10 b = 15 #布爾“與”運(yùn)算 if ( a and b ): print ("變量a和b都為true") else: print ("變量a和b有一個不為true") #布爾“或”運(yùn)算 if ( a or b ): print ("變量a和b都為true,或其中一個變量為true") else: print ("變量a和b都不為true") # 修改變量a的值 a = 0 if ( a and b ): print ("變量a和b都為true") else: print ("變量a和b有一個不為true") if ( a or b ): print ("變量a和b都為true,或其中一個變量為true") else: print ("變量a和b都不為true") # 布爾“非”運(yùn)算 if not( a and b ): print ("變量a和b都為false,或其中一個變量為false") else: print ("變量a和b都為true")
保存并運(yùn)行程序,結(jié)果如下:
變量a和b都為true 變量a和b都為true,或其中一個變量為true 變量a和b有一個不為true 變量a和b都為true,或其中一個變量為true 變量a和b都為false,或其中一個變量為false
在本案例中,首先定義變量a和b并簡單賦值,然后對變量進(jìn)行各種邏輯運(yùn)算操作。
2.5.5 位運(yùn)算符
在Python中,按位運(yùn)算是把數(shù)字轉(zhuǎn)換為二進(jìn)制來進(jìn)行計算。Python支持的位運(yùn)算符如表2-5所示。
表2-5 位運(yùn)算符

【案例2-5】使用位運(yùn)算符(代碼2.5.py)。
a = 12 # 12 =00001100 b = 6 # 6= 00000110 c = 0 #按位與運(yùn)算 c = a & b # 4 = 00000100 print ("c的值為:", c) #按位或運(yùn)算 c = a | b # 14 = 00001110 print ("c的值為:", c) #按位異或運(yùn)算 c = a ^ b # 10 = 00001010 print ("c的值為:", c) #按位取反運(yùn)算 c = ~a # -13 = 10001101 print ("c的值為:", c) #左移動運(yùn)算 c = a << 2 # 48 = 00110000 print ("c的值為:", c) #右移動運(yùn)算 c = a >> 2 # 3 = 00000011 print ("c的值為:", c)
保存并運(yùn)行程序,結(jié)果如下:
c的值為: 4 c的值為: 14 c的值為: 10 c的值為: -13 c的值為: 48 c的值為: 3
在本案例中,首先定義變量a、b和c并簡單賦值,然后對變量進(jìn)行各種位運(yùn)算操作。讀者特別需要注意按位取反運(yùn)算的操作結(jié)果。
2.5.6 身份運(yùn)算符
Python支持的身份運(yùn)算符為is和not is。其中is是判斷兩個標(biāo)識符是不是引用自同一個對象;is not是判斷兩個標(biāo)識符是不是引用自不同對象。
【案例2-6】使用身份運(yùn)算符(代碼2.7.py)。
a =’張笑笑’ b = ’劉萍’ #使用is身份運(yùn)算符 if ( a is b): print ("a和b有相同的標(biāo)識") else: print ("a和b沒有相同的標(biāo)識") #使用is not身份運(yùn)算符 if ( a is not b ): print ("a和b沒有相同的標(biāo)識") else: print ("a和b有相同的標(biāo)識") # 修改變量a的值 a = ’劉萍’ if ( a is b): print ("修改后的a和b有相同的標(biāo)識") else: print ("修改后的a和b仍然沒有相同的標(biāo)識")
保存并運(yùn)行程序,結(jié)果如下:
a和b沒有相同的標(biāo)識 a和b沒有相同的標(biāo)識 修改后的a和b有相同的標(biāo)識
在本案例中,首先定義變量a和b并簡單賦值,然后判斷a和b是否具有相同的標(biāo)識,接著修改變量a的值,修改后的a和b有相同的標(biāo)識。
2.5.7 成員運(yùn)算符
Python還支持成員運(yùn)算符,測試實例中包含了一系列成員,包括字符串、列表或元組。成員運(yùn)算符包括in和not in, x in y表示如果x在y序列中返回true; x not in y表示如果x不在y序列中返回true。
【案例2-7】使用成員運(yùn)算符(代碼2.6.py)。
a =’張笑笑’ b = ’劉萍’ students = [’王平’, ’張小平’, ’李曉莉’, ’張雁峰’, ’韓恩麗’ ]; # 使用in成員運(yùn)算符 if ( a in students ): print ("變量a在給定的列表students中") else: print ("變量a不在給定的列表students中") # 使用not in成員運(yùn)算符 if ( b not in students ): print ("變量b不在給定的列表students中") else: print ("變量b在給定的列表students中") # 修改變量a的值 a = ’張小平’ if ( a in students ): print ("變量a在給定的列表students中") else: print ("變量a不在給定的列表students中")
保存并運(yùn)行程序,結(jié)果如下:
變量a不在給定的列表students中 變量b不在給定的列表students中 變量a在給定的列表students中
在本案例中,首先定義變量a和b并簡單賦值,然后定義了一個列表變量students,接著開始判斷變量a和b是否屬于列表students的成員,修改變量a的值后,變量a屬于列表students的成員。
2.5.8 運(yùn)算符的優(yōu)先級
Python運(yùn)算符以處理的先后排列如下。
(1)(), [], {}。
(2)'object'。
(3)object[i], object[1:r], object.attribute, function()。
(4)(.)符號用來存取對象的屬性與方法。下列案例調(diào)用對象t的append()方法,在對象t的結(jié)尾加上一個字符"t":
>>> t = ["P", "a", "r", "r", "o"] >>> t.append("t") >>> t ['P', 'a', 'r', 'r', 'o', 't']
(5)+x, -x, ~x。
(6)x**y:x的y次方。
(7)x * y, x / y, x % y:x乘y, x除以y, x除以y的余數(shù)。
(8)x + y, x - y:x加上y, x減y。
(9)x << y, x >> y:x左移y位,x右移y位。例如:
>>> x = 4 >>> x << 2 16
(10)x & y:按位與運(yùn)算符。
(11)x ^ y:按位異或運(yùn)算符。
(12)x | y:按位或運(yùn)算符。
(13)<, <=, >, >=, ==, !=, <>, is, is not, in, not in。in與not in運(yùn)算符應(yīng)用在列表(list)上。is運(yùn)算符檢查兩個變量是否屬于相同的對象。is not運(yùn)算符則是檢查兩個變量是否不屬于相同的對象。! =與<>運(yùn)算符是相同功能的運(yùn)算符,都是測試兩個變量是否不相等。Python建議使用!=運(yùn)算符,而不要使用<>運(yùn)算符。
(14)not。
(15)and。
(16)or, lambda args:expression。
使用運(yùn)算符時須注意下列事項。
(1)將除法應(yīng)用在整數(shù)時,其結(jié)果會是一個浮點數(shù)。例如8/4會等于2.0,而不是2。余數(shù)運(yùn)算會將x / y所得的余數(shù)返回來,例如7%4 =3。
(2)如果將兩個浮點數(shù)相除取余數(shù),其返回值也會是一個浮點數(shù),其計算方式是x - int(x/ y)* y。例如:
>>>7.0 % 4.0 3.0
(3)比較運(yùn)算符可以連在一起處理,例如a<b<c<d, Python會將這個式子解釋成a<b and b<c and c<d。像x<y>z也是有效的表達(dá)式。
(4)如果運(yùn)算符(operator)兩端的運(yùn)算數(shù)(operand)數(shù)據(jù)類型不相同,Python會將其中一個運(yùn)算數(shù)的數(shù)據(jù)類型,轉(zhuǎn)換成跟另一個運(yùn)算數(shù)一樣的數(shù)據(jù)類型。轉(zhuǎn)換方式為:若有一個運(yùn)算數(shù)是復(fù)數(shù),另一個運(yùn)算數(shù)也會被轉(zhuǎn)換成復(fù)數(shù);若有一個運(yùn)算數(shù)是浮點數(shù),另一個運(yùn)算數(shù)也會被轉(zhuǎn)換成浮點數(shù)。
(5)Python有一個特殊的運(yùn)算符:lambda。利用lambda運(yùn)算符能夠以表達(dá)式的方式創(chuàng)建一個匿名函數(shù)。lambda運(yùn)算符的語法如下:
lambda args : expression
args是以逗號(,)隔開的參數(shù)列表(list),而expression則是對這些參數(shù)進(jìn)行運(yùn)算的表達(dá)式。
例如:
>>>a=lambda x, y:x + y >>>print (a(3,4)) 7
x與y是a()函數(shù)的參數(shù),a()函數(shù)的表達(dá)式是x+y。lambda運(yùn)算符后只允許有一個表達(dá)式。要達(dá)到相同的功能,也可以使用函數(shù)來定義a,如下所示:
>>> def a(x, y): #定義一個函數(shù) return x + y #返回參數(shù)的和 >>> print (a(3,4)) 7
【案例2-8】比較運(yùn)算符的優(yōu)先級(代碼2.8.py)。
a = 10 b = 6 c = 4 d = 2 e = 0 e = (a + b) * c / d #(16 *4 ) / 2 print ("(a + b) * c / d運(yùn)算結(jié)果為:", e) e = ((a + b) * c) / d # (16 *4 ) /2 print ("((a + b) * c) / d運(yùn)算結(jié)果為:", e) e = (a + b) * (c / d); # (16) * (4/2) print ("(a + b) * (c / d) 運(yùn)算結(jié)果為:", e) e = a + (b * c) / d; # 10 + (24/2) print ("a + (b * c) / d運(yùn)算結(jié)果為:", e)
保存并運(yùn)行程序,結(jié)果如下:
(a + b) * c / d運(yùn)算結(jié)果為:32.0 ((a + b) * c) / d運(yùn)算結(jié)果為:32.0 (a + b) * (c / d) 運(yùn)算結(jié)果為:32.0 a + (b * c) / d運(yùn)算結(jié)果為:22.0
在本案例中,首先定義變量a、b、c、d、e并簡單賦值,然后通過各種類型的運(yùn)算符混合計算,用戶可以分辨出這些運(yùn)算符的優(yōu)先級。
- Visual FoxPro程序設(shè)計教程(第3版)
- What's New in TensorFlow 2.0
- Java Web開發(fā)之道
- PyTorch Artificial Intelligence Fundamentals
- 跟老齊學(xué)Python:輕松入門
- 趣學(xué)Python算法100例
- DevOps入門與實踐
- Python神經(jīng)網(wǎng)絡(luò)項目實戰(zhàn)
- Visual C++數(shù)字圖像處理技術(shù)詳解
- 精通Python設(shè)計模式(第2版)
- PhoneGap:Beginner's Guide(Third Edition)
- Mathematica Data Analysis
- MATLAB for Machine Learning
- Machine Learning in Java
- Java Fundamentals