官术网_书友最值得收藏!

3.10 常用操作符

視頻講解

3.10.1 算術操作符

Python的算術操作符大多數和大家知道的數學運算符一樣:

+ - * / % ** //

前面四個就不用介紹了,加、減、乘、除,大家都懂。不過下面要介紹的小技巧倒不是所有人都知道的。

例如,當想對一個變量本身進行算術運算的時候,是不是會覺得寫a = a + 1或b =b-3這類操作符特別麻煩?沒錯,在Python中可以做一些簡化:

     >>> a = b = c = d = 10
     >>> a += 1
     >>> b -= 3
     >>> c *= 10
     >>> d /= 8
     >>> print(a, b, c, d)
     11 7 100 1.25

如果使用過Python 2.x版本的讀者可能會發現,Python 3的除法變得有些不同了。很多編程語言中,整數除法一般都是采用floor的方式,有些書籍將其直接翻譯為地板除法。地板除法的概念是:計算結果取比商小的最大整型值(也就是舍棄小數,取整的意思)。

但是在這里我們發現,即使是進行整數間的除法,結果卻是返回一個浮點型的精確數值,也就是Python采用真正的除法代替了地板除法。

那有些朋友不樂意了:“蘿卜、青菜各有所愛,我就喜歡原來的除法,整數除以整數就應該得到一個整數!”,于是Python的團隊也為此想好了辦法,就是大家看到的雙斜杠,它執行的就是地板除法的操作:

     >>> 3 // 2
     1
     >>> 3.0 // 2
     1.0

注意:

使用地板除法,無論是整型還是浮點型,都將舍棄小數部分。

關于Python 3在除法運算上的改革,支持和反對的幾乎各占一半。有些人支持這種做法,因為Python的除法運算從一開始的設計就是失誤的,他們想要真正的除法;但有些人又不想因此修改自己的海量代碼……無論怎樣,這已經是板上釘釘的事情了。Python團隊秉承著執著、追求完美的信念不斷打造和改進Python,就這件事情本身我們就應該為其點贊。

百分號(%)表示求余數的意思:

     >>> 5 % 2
     1
     >>> 4 % 2
     0
     >>> 520 % 14
     2

3.10.2 優先級問題

當一個表達式存在多個運算符的時候,就可能會發生以下對話。

加法運算符說:“我先到的,我先計算!”

乘法運算符說:“哥我運算一次夠你翻幾個圈了,哥先來!”

減法運算符說:“你糊涂了,我現在被當成負號使用,沒有我,你們再努力,結果也是得到相反的數!”

除法運算符這時候默默地說:“搶吧搶吧,我除以零,大家同歸于盡!”

為了防止以上矛盾的出現,我們規定了運算符的優先級,當多個運算符同時出現在一個表達式的時候,嚴格按照優先級規定的級別來進行運算。

先乘、除,后加、減,如有括號先運行括號里邊的。沒錯,從小學我們就學到了運算符優先級的精髓,在編程中也是這么繼承下來的。

舉個例子:

     -3 * 2 + 5 / -2 - 4

相當于:

     (-3) * 2 + 5 / (-2) - 4

其實多做練習自然就記住了,不用刻意去背。當然,在適當的地方加上括號強調一下優先級,小甲魚覺得會是更好的方案。

Python還有一個特殊的乘法,就是雙星號(**),也稱為冪運算操作符。例如3**2,雙星號左側的3稱為底數,右側的2稱為指數,把這樣的算式稱為3的2次冪。

在使用Python進行冪運算的時候,需要注意的一點是優先級問題。舉個例子:

     >>> -5 ** 2
     -25
     >>> 5 ** -2
     0.04

從上面的結果可以看出:冪運算操作符比其左側的一元操作符優先級高,比其右側的一元操作符優先級低。

3.10.3 比較操作符

比較運算符包括:

< <= > >= == !=

比較操作符根據表達式的值的真假返回布爾類型值:

     >>> 3 < 4
     True
     >>> 1 + 1 >= 2
     True
     >>> 'a' > 'b'
     False
     >>> 5 / 2 <= 3
     True
     >>> 5 > 3 < 4
     True

3.10.4 邏輯操作符

邏輯操作符包括:

and or not

and操作符之前已經學習過,在實例中也多次使用。當只有and操作符左邊的操作數為True,且右邊的操作符同時為True的時候,結果才為True:

     >>> 3 > 4 and 4 < 5
     False
     >>> 3 < 4 and 4 < 5
     True

or操作符與and操作符不同,or操作符只需要左邊或者右邊任意一邊為真,結果都為真;只有當兩邊同時為假,結果才為假:

     >>> 3 > 4 or 4 < 5
     True
     >>> 3 > 4 or 4 > 5
     False

not操作符是一個一元操作符,它的作用是得到一個和操作數相反的布爾類型的值:

     >>> not True
     False
     >>> not 0
     True
     >>> not 4
     False

另外,可能還會看到下面這樣的表達式:

     5 > 3 < 4

這在其他編程語言中可能是不合法的,但在Python中是行得通的,它事實上被解釋為:

     5 > 3 and 3 < 4

將目前接觸過的所有操作符優先級合并在一起,如圖3-1所示。

圖3-1 Python操作符優先級

請思考:(not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)的結果應該是多少?為什么呢?

主站蜘蛛池模板: 磴口县| 青阳县| 吉木萨尔县| 浑源县| 普宁市| 公主岭市| 北碚区| 新丰县| 泽库县| 桓仁| 历史| 阿图什市| 迁西县| 阿巴嘎旗| 文水县| 舒兰市| 巴彦淖尔市| 栾川县| 林州市| 海门市| 四子王旗| 邮箱| 清丰县| 邢台县| 尼玛县| 开江县| 开化县| 五家渠市| 昌宁县| 景德镇市| 保定市| 鹤壁市| 延庆县| 靖江市| 阿坝县| 五大连池市| 台南市| 琼结县| 新巴尔虎右旗| 蒙自县| 尉犁县|