目錄:
一、算術操作符
二、優先順序問題
三、比較操作符
四、邏輯操作符
五、課時06課後習題及答案
******************
一、算術操作符
******************
>>> a = b = c = d = 10
>>> a += 1
>>> b -= 3
>>> c *= 10
>>> d /= 8
>>> (a,b,c,d)
(11, 7, 100, 1.25)
在這裡我們發現,即使是進行整數間的除法,但是答案是自動返回一個浮點型的精確數值,也就是說Python用真正的除法代替了地板除法。 地板除法的概念是:計算結果取比商小的最大整型,也就是捨棄小數的意思。(注:例如3 / 2等於1)
>>> 3 / 2 1.5 >>> 3 // 2 1 >>> 3.0 // 2 1.0 >>> 3.0 / 2 1.5
值得注意的一點是,無論是整數運算還是浮點數運算,都不會執行地板除法。需要用//。
>>> 5%2
1
>>> 4%2
0
>>> 520 % 14
2
>>>
百分號(%)表示求餘數的意思。
******************
二、優先順序問題
******************
先乘除後加減,如有括號先算括號裡的。
>>> -3 * 2 + 5 / -2 -4 -12.5 >>> (-3) * 2 + 5 / (-2) -4 -12.5
Python中還有一個特殊的乘法,就是雙星號(**),也稱為冪運算操作符。例如3**2,雙星號左側的3稱為底數,右側的2稱為指數,把這樣的算式叫作3的2次冪,結果就是3*3==9.
在使用Python進行冪運算的時候,需要注意一點是優先順序問題,因為冪運算操作符和一元操作符(只有一個運算元)的優先順序關係比較特別:冪運算操作符比其左側的一元操作符優先順序高,比其右側的一元操作符優先順序低:
>>> -3 ** 2 -9 >>> - (3 ** 2) -9 >>> 3 ** -2 0.1111111111111111 >>> 3 ** (-2) 0.1111111111111111
******************
三、比較操作符
******************
比較操作符包括:< <= > >= == !=
比較操作符根據表示式的值的真假返回布林型別的值。
******************
四、邏輯操作符
******************
邏輯運算子包括: and or not
and :同真為真
or:同假為假
not :它的作用是得到一個和運算元相反的布林型別的值
>>> not True False >>> not 0 True >>> not 4 False >>> 3 < 4 <5 True >>> 3 < 4 and 4 < 5 True
在Python中,0解釋為False,非0的數解釋為True。
Python操作符優先順序:
*******************************
五、課時06課後習題及答案
*******************************
測試題:
0. Python 的 floor 除法現在使用 “//” 實現,那 3.0 // 2.0 您目測會顯示什麼內容呢?
1. a < b < c 事實上是等於?
2. 不使用 IDLE,你可以輕鬆說出 5 ** -2 的值嗎?
3. 如何簡單判斷一個數是奇數還是偶數?
4. 請用最快速度說出答案:not 1 or 0 and 1 or 3 and 4 or 5 and 6 or
7 and 8 and 9
5. 還記得我們上節課那個求閏年的作業嗎?如果還沒有學到“求餘”操作,還記得用什麼方法可以“委曲求全”代替“%”的功能呢?
動動手:
0. 請寫一個程式列印出 0~100 所有的奇數。
1. 我們說過現在的 Python 可以計算很大很大的資料,但是......真正的大資料計算可是要靠剛剛的硬體滴,不妨寫一個小程式碼,讓你的計算機為之崩潰?
2. 愛因斯坦曾出過這樣一道有趣的數學題:有一個長階梯,若每步上2階,最後剩1階;若每步上3階,最後剩2階;若每步上5階,最後剩4階;若每步上6階,最後剩5階;只有每步上7階,最後剛好一階也不剩。
題目:請程式設計求解該階梯至少有多少階?
答案:
測試題答案:
0. Python 的
floor 除法現在使用 “//” 實現,那 3.0 //
2.0 您目測會顯示什麼內容呢
如果回答是 1.5 那麼很遺憾,您受到 C 語言的影響比較大,Python 這裡會義無反顧地執行 floor 除法原則,答案是:1.0
1. a < b < c 事實上是等於?
(a < b) and (b < c)
2. 不使用 IDLE,你可以輕鬆說出 5
** -2 的值嗎?
0.04,也就是 1/25
冪運算操作符比其左側的一元操作符優先順序高,比其右側的一元操作符優先順序低。
3. 如何簡單判斷一個數是奇數還是偶數?
使用求餘可以簡單得到答案:能被 2 整除為偶數,所以 x %
2 == 0,否則為奇數。
4. 請用最快速度說出答案:not 1 or 0 and 1 or 3 and 4 or
5 and 6 or 7 and 8 and 9
如果你的回答是 0,那麼小甲魚很開心你中招了!
答案是:4
not or and 的優先順序是不同的:not > and > or
我們按照優先順序給它們加上括號:(not 1) or (0 and 1) or (3 and 4) or (5
and 6) or (7 and 8 and 9)
== 0 or 0 or 4 or 6 or 9
== 4
為啥是 4?
大家還記得第四講作業提到的“短路邏輯”嗎?3 and 4 == 4,而 3 or 4 == 3。
所以答案是:4
溫馨提示:為了更好的表達你的程式,小甲魚再次呼籲有些括號還是不能省下的,畢竟不是所有程式設計師都跟你一樣都將優先順序爛透於心的。
5. 還記得我們上節課那個求閏年的作業嗎?如果還沒有學到“求餘”操作,還記得用什麼方法可以“委曲求全”代替“%”的功能呢?
因為上節課我們還沒有教大家“求餘”的操作,所以小甲魚使用了“if year/400 == int(year/400)”這樣的方式來“委曲求全”。
動動手答案:
0. 請寫一個程式列印出 0~100 所有的奇數。
i = 0 while i <= 100: if i % 2 != 0: print(i, end=' ') i += 1 else: i += 1
或者:
i = 0 while i <= 100: if i % 2 != 0: print(i,end=" ") i+=1
1. 我們說過現在的 Python 可以計算很大很大的資料,但是......真正的大資料計算可是要靠剛剛的硬體滴,不妨寫一個小程式碼,讓你的計算機為之崩潰?
print(2 ** 2 ** 32) # 一般很多機子都會在一會兒之後:Memory Overflow,記憶體不夠用。 # 設計到冪操作,結果都是驚人滴。
2. 題目:請程式設計求解該階梯至少有多少階?
x = 7 i = 1 flag = 0
while i <= 100: if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5): flag = 1 else: x = 7 * (i+1) # 根據題意,x一定是7的整數倍,所以每次乘以7 i += 1 if flag == 1: print('階梯數是:', x) else: print('在程式限定的範圍內找不到答案!')