004:Python語言元素之運算符

運算符 描述
[] [:] 下標,切片
** 指數
~ + - 按位取反, 正負號
* / % // 乘,除,模,整除
+ - 加,減
>> << 右移,左移
& 按位與
^ \| 按位異或,按位或
<= < > >= 小於等於,小於,大於,大於等於
== != 等於,不等於
is is not 身份運算符
in not in 成員運算符
not or and 邏輯運算符
= += -= *= /= %= //= **= &= |= ^= >>= <<= (複合)賦值運算符

 說明: 上面這個表格實際上是按照運算符的優先級從上到下列出了各種運算符。所謂優先級就是在一個運算的表達式中,如果出現了多個運算符,應該先執行哪個運算再執行哪個運算的順序。在實際開發中,如果搞不清楚運算符的優先級,可以使用圓括號來確保運算的執行順序。

算術運算符

Python中的算術運算符非常豐富,除了大家最爲熟悉的加減乘除之外,還有整除運算符、求模(求餘數)運算符和求冪運算符。

"""
算術運算符
"""
print(321 + 123)     # 加法運算
print(321 - 123)     # 減法運算
print(321 * 123)     # 乘法運算
print(321 / 123)     # 除法運算
print(321 % 123)     # 求模運算
print(321 // 123)    # 整除運算
print(321 ** 123)    # 求冪運算

賦值運算符

賦值運算符應該是最爲常見的運算符,它的作用是將右邊的值賦給左邊的變量。

"""
賦值運算符和複合賦值運算符
"""
a = 10
b = 3
a += b        # 相當於:a = a + b
a *= a + 2    # 相當於:a = a * (a + 2)
print(a)      # 算一下這裏會輸出什麼

###比較運算符和邏輯運算符

比較運算符有的地方也稱爲關係運算符,包括==!=<><=>=,我相信沒有什麼好解釋的,大家一看就能懂,需要提醒的是比較相等用的是==,請注意這裏是兩個等號,因爲=是賦值運算符,==纔是比較相等的運算符;比較不相等用的是!=,這不同於數學上的不等號,Python 2中曾經使用過<>來表示不等關係。比較運算符會產生布爾值,要麼是True要麼是False

邏輯運算符有三個,分別是andornotand字面意思是“而且”,所以and運算符會連接兩個布爾值,如果兩個布爾值都是True,那麼運算的結果就是True;左右兩邊的布爾值有一個是False,最終的運算結果就是False。相信大家已經想到了,如果and左邊的布爾值是False,不管右邊的布爾值是什麼,最終的結果都是False,所以在做運算的時候右邊的值會被跳過(短路處理),這也就意味着在and運算符左邊爲False的情況下,右邊的表達式根本不會執行。or字面意思是“或者”,所以or運算符也會連接兩個布爾值,如果兩個布爾值有任意一個是True,那麼最終的結果就是True。當然,or運算符也是有短路功能的,在它左邊的布爾值爲True的情況下,右邊的表達式根本不會執行。not運算符的後面會跟上一個布爾值,它的作用是得到與該布爾值相反的值,也就是說,not後面的布爾值如果是True,運算結果就是False;而not後面的布爾值如果是False,運算結果就是True

"""
比較運算符和邏輯運算符的使用
"""
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,再將這個值賦值給變量flag0print函數可以輸出多個值,多個值之間可以用,進行分隔,輸出的內容之間默認以空格分開。

運算符的例子

例子1:華氏溫度轉換爲攝氏溫度。

提示:華氏溫度到攝氏溫度的轉換公式爲:C = (F - 32) / 1.8。 

"""
將華氏溫度轉換爲攝氏溫度
"""
f = float(input('請輸入華氏溫度: '))
c = (f - 32) / 1.8
print('%.1f華氏度 = %.1f攝氏度' % (f, c))

說明:在使用print函數輸出時,也可以對字符串內容進行格式化處理,上面print函數中的字符串%.1f是一個佔位符,稍後會由一個float類型的變量值替換掉它。同理,如果字符串中有%d,後面可以用一個int類型的變量值替換掉它,而%s會被字符串的值替換掉。除了這種格式化字符串的方式外,還可以用下面的方式來格式化字符串,其中{f:.1f}{c:.1f}可以先看成是{f}{c},表示輸出時會用變量f和變量c的值替換掉這兩個佔位符,後面的:.1f表示這是一個浮點數,小數點後保留1位有效數字。 

print(f'{f:.1f}華氏度 = {c:.1f}攝氏度')

 例子2:輸入圓的半徑計算計算周長和麪積。

"""
輸入半徑計算圓的周長和麪積
"""
radius = float(input('請輸入圓的半徑: '))
perimeter = 2 * 3.1416 * radius
area = 3.1416 * radius * radius
print('周長: %.2f' % perimeter)
print('面積: %.2f' % area)

例子3:輸入年份判斷是不是閏年。

"""
輸入年份 如果是閏年輸出True 否則輸出False
"""
year = int(input('請輸入年份: '))
is_leap = year % 4 == 0 and year % 100 != 0 or year % 400 == 0
print(is_leap)

說明:比較運算符會產生布爾值,而邏輯運算符andor會對這些布爾值進行組合,最終也是得到一個布爾值,閏年輸出True,平年輸出False

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章