第04課:Python語言元素之運算子
第04課:Python語言元素之運算子
Python語言支援很多種運算子,我們先用一個表格為大家列出這些運算子,然後選擇一些馬上就會用到的運算子為大家進行講解。
運算子 | 描述 |
---|---|
[] [:] |
下標,切片 |
** |
指數 |
~ + - |
按位取反, 正負號 |
* / % // |
乘,除,模,整除 |
+ - |
加,減 |
>> << |
右移,左移 |
& |
按位與 |
^ \| |
按位異或,按位或 |
<= < > >= |
小於等於,小於,大於,大於等於 |
== != |
等於,不等於 |
is is not |
身份運算子 |
in not in |
成員運算子 |
not or and |
邏輯運算子 |
= += -= *= /= %= //= **= &= |= ^= >>= <<= |
(複合)賦值運算子 |
說明: 上面這個表格實際上是按照運算子的優先順序從上到下列出了各種運算子。所謂優先順序就是在一個運算的表示式中,如果出現了多個運算子,應該先執行哪個運算再執行哪個運算的順序。在實際開發中,如果搞不清楚運算子的優先順序,可以使用圓括號來確保運算的執行順序。
算術運算子
Python中的算術運算子非常豐富,除了大家最為熟悉的加減乘除之外,還有整除運算子、求模(求餘數)運算子和求冪運算子。下面的例子為大家展示了算術運算子的使用。
"""
算術運算子
Version: 0.1
Author: 駱昊
"""
print(321 + 123) # 加法運算
print(321 - 123) # 減法運算
print(321 * 123) # 乘法運算
print(321 / 123) # 除法運算
print(321 % 123) # 求模運算
print(321 // 123) # 整除運算
print(321 ** 123) # 求冪運算
賦值運算子
賦值運算子應該是最為常見的運算子,它的作用是將右邊的值賦給左邊的變數。下面的例子演示了賦值運算子和複合賦值運算子的使用。
""" 賦值運算子和複合賦值運算子 Version: 0.1 Author: 駱昊 """ a = 10 b = 3 a += b # 相當於:a = a + b a *= a + 2 # 相當於:a = a * (a + 2) print(a) # 算一下這裡會輸出什麼
比較運算子和邏輯運算子
比較運算子有的地方也稱為關係運算符,包括==
、!=
、<
、>
、<=
、>=
,我相信沒有什麼好解釋的,大家一看就能懂,需要提醒的是比較相等用的是==
,請注意這裡是兩個等號,因為=
是賦值運算子,我們在上面剛剛講到過,==
才是比較相等的運算子;比較不相等用的是!=
,這不同於數學上的不等號,Python 2中曾經使用過<>
來表示不等關係,大家知道就可以了。比較運算子會產生布爾值,要麼是True
要麼是False
。
邏輯運算子有三個,分別是and
、or
和not
。and
字面意思是“而且”,所以and
運算子會連線兩個布林值,如果兩個布林值都是True
,那麼運算的結果就是True
;左右兩邊的布林值有一個是False
,最終的運算結果就是False
。相信大家已經想到了,如果and
左邊的布林值是False
,不管右邊的布林值是什麼,最終的結果都是False
,所以在做運算的時候右邊的值會被跳過(短路處理),這也就意味著在and
運算子左邊為False
的情況下,右邊的表示式根本不會執行。or
字面意思是“或者”,所以or
運算子也會連線兩個布林值,如果兩個布林值有任意一個是True
,那麼最終的結果就是True
。當然,or
運算子也是有短路功能的,在它左邊的布林值為True
的情況下,右邊的表示式根本不會執行。not
運算子的後面會跟上一個布林值,它的作用是得到與該布林值相反的值,也就是說,not
後面的布林值如果是True
,運算結果就是False
;而not
後面的布林值如果是False
,運算結果就是True
。
"""
比較運算子和邏輯運算子的使用
Version: 0.1
Author: 駱昊
"""
flag0 = 1 == 1
flag1 = 3 > 2
flag2 = 2 < 1
flag3 = flag1 and flag2
flag4 = flag1 or flag2
flag5 = not (1 != 2)
print('flag0 =', flag0) # flag0 = True
print('flag1 =', flag1) # flag1 = True
print('flag2 =', flag2) # flag2 = False
print('flag3 =', flag3) # flag3 = False
print('flag4 =', flag4) # flag4 = True
print('flag5 =', flag5) # flag5 = False
說明:比較運算子的優先順序高於賦值運算子,所以
flag0 = 1 == 1
先做1 == 1
產生布爾值True
,再將這個值賦值給變數flag0
。,
進行分隔,輸出的內容之間預設以空格分開。
運算子的例子
例子1:華氏溫度轉換為攝氏溫度。
提示:華氏溫度到攝氏溫度的轉換公式為:
C = (F - 32) / 1.8
。
"""
將華氏溫度轉換為攝氏溫度
Version: 0.1
Author: 駱昊
"""
f = float(input('請輸入華氏溫度: '))
c = (f - 32) / 1.8
print('%.1f華氏度 = %.1f攝氏度' % (f, c))
說明:在使用
%.1f
是一個佔位符,稍後會由一個float
型別的變數值替換掉它。同理,如果字串中有%d
,後面可以用一個int
型別的變數值替換掉它,而%s
會被字串的值替換掉。除了這種格式化字串的方式外,還可以用下面的方式來格式化字串,其中{f:.1f}
和{c:.1f}
可以先看成是{f}
和{c}
,表示輸出時會用變數f
和變數c
的值替換掉這兩個佔位符,後面的:.1f
表示這是一個浮點數,小數點後保留1位有效數字。print(f'{f:.1f}華氏度 = {c:.1f}攝氏度')
例子2:輸入圓的半徑計算計算周長和麵積。
"""
輸入半徑計算圓的周長和麵積
Version: 0.1
Author: 駱昊
"""
radius = float(input('請輸入圓的半徑: '))
perimeter = 2 * 3.1416 * radius
area = 3.1416 * radius * radius
print('周長: %.2f' % perimeter)
print('面積: %.2f' % area)
例子3:輸入年份判斷是不是閏年。
"""
輸入年份 如果是閏年輸出True 否則輸出False
Version: 0.1
Author: 駱昊
"""
year = int(input('請輸入年份: '))
is_leap = year % 4 == 0 and year % 100 != 0 or year % 400 == 0
print(is_leap)
說明:比較運算子會產生布爾值,而邏輯運算子
and
和or
會對這些布林值進行組合,最終也是得到一個布林值,閏年輸出True
,平年輸出False
。
總結
通過上面的例子相信大家感受到了,學會使用運算子以及由運算子構成的表示式,就可以幫助我們解決很多實際的問題,運算子和表示式對於任何一門程式語言都是非常重要的。
今天太陽也東昇,而後西沉,早晨盛開的花兒也將凋謝;今天的太陽也西沉,而後東昇,陽光照射之處遍地花開,但卻已非昨日之花。