- 零基礎入門學習Python(第2版)
- 小甲魚
- 1410字
- 2019-12-20 12:19:33
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)的結果應該是多少?為什么呢?
- Java Web開發學習手冊
- 在最好的年紀學Python:小學生趣味編程
- 我的第一本算法書
- 薛定宇教授大講堂(卷Ⅳ):MATLAB最優化計算
- 老“碼”識途
- 匯編語言程序設計(第3版)
- 3D少兒游戲編程(原書第2版)
- Getting Started with Python Data Analysis
- jQuery開發基礎教程
- ArcGIS By Example
- 全棧自動化測試實戰:基于TestNG、HttpClient、Selenium和Appium
- 打開Go語言之門:入門、實戰與進階
- Spring MVC+MyBatis開發從入門到項目實踐(超值版)
- Cocos2d-x Game Development Blueprints
- Building Dynamics CRM 2015 Dashboards with Power BI