0基礎學Python之四:數字運算(下)

0基礎學Python之四:數字運算(下)

來自專欄 可樂編程 https://www.zhihu.com/video/959449873083359232

Hi 大家好,我是王可樂。上一節課里,可樂帶大家了解了 Python 中的數字、數字類型以及變數。在這一節課里,可樂繼續為大家介紹 Python 中的運算。

首先,我們先來看一下最簡單的四則運算,也就是加減乘除。在前面的課程中,我們已經反覆看到了這個運算 6 * 7,其中星號表示乘法運算。此外,我們常見的 + 號和 - 號可以對數值進行加減運算,除法運算的符號是 /,此外還有一個取整除法雙 //。

我們一起來試一下:輸入 1 + 1,回車,確實等於 2;輸入 2 - 3,回車,看到是 -1;輸入 5 / 4,回車,可以看到,兩個整數相除得到了浮點數 1.25,我們可以驗證一下,輸入 x = 5 / 4,回車,然後檢查一下 type(x),結果類型確實是float。說到除法和浮點數,可樂有必要提醒大家一下,在計算機中浮點數的表示是有精度限制的,也就是說無法表示任意精度的小數。例如我們計算一下 5 / 3,結果應該是無限循環的 1.無限個6...,但是 Python 由於精度的限制只能表示有限位,因此結果就變成了 1.6666……7。

以上這些運算都是比較直觀的,另一個特殊的除法稱作取整除法,我們來 看一下:輸入 5 // 4,回車,結果竟然是 1;而 6 // 7 呢,結果是 0。並且我們 可以看一下,輸入 type(5 // 4),結果還是 int 類型。這是怎麼回事呢?

這裡可樂要為大家介紹一點古老的計算機歷史。在 Python2 以及很多早期的編程語言中,整數的除法默認都是只能得到整數結果的。

除了四則運算,Python 還支持另外兩個算術運算符,它們分別是 % 表示的取模運算和 ** (念兩個星號)表示的求冪運算。我們來分別看一下:

取模運算和另一種稱作取余運算的運算一起,都是對除法求餘數的運算,它們的不同點在於做除法運算時對商的選取方法不同。不過在我們的初級課程中,你只需要知道正整數取模這一種運算就可以了。如果你有興趣,可以在課後自己搜索一下取余和取模運算,以及負整數、實數的取模取余運算規則。

我們只來看一下正整數。在我們的 Python Shell 里,輸入 7 % 3,回車,可以看到結果為 1。這是什麼意思呢,很簡單,就是說 7 除以 3 的餘數是 1。我們再來看一下,42 % 6,回車,可以看到結果為 0,也就是說 42 除以 6 餘數為 0,可以整除。

在日常開發中,取模計算最常見的應用應該算是判斷奇數偶數了。例如我們定義變數 x,輸入 x = 42,然後繼續輸入 x % 2,看到結果是 0,那麼 42 是偶數;再試一個,x = 13,x % 2 回車,結果顯然為 1。

另一種計算叫做求冪,也就是我們常說的求次方,這個運算用兩個緊挨著的星號來表示。例如我們試一下輸入:2 ** 10,回車,也就是說 2 的 10 次方等於 1024。和數學上一樣,實數域上都可以進行求冪運算,例如 4 的 0.5 次冪(邊念邊輸入 4 ** 0.5),結果是 2.0。

說完了這些數學運算符,和大家接觸過的基礎數學知識是不是非常像呢?下面我們再來看一下另一種運算符,稱作賦值運算符,賦值運算符用 = 表示,但是它和我們在數學裡常見的等號可不是一回事。

在前面的課程中,可樂為大家介紹過變數的概念。例如我們輸入 x = 2,回車。這時我們說定義了一個變數 x,這個操作除了定義,還使得 x 的值為 2。如果我們再輸入 x = 3,那麼這個語句就是將 x 賦值為 3 了。

賦值運算和數學中等號的區別在於,Python 中只能給變數賦值。也就是說等號左邊必須是一個變數,而等號右邊則必須能夠計算出來一個合法的值。賦值運算的功能就是將等號右邊計算出來的值賦予左邊的變數。

例如,我們可以寫出 x = 1 + 1,y = x ** 2 這樣的賦值語句。我們來看一下,輸入 x 回車,值為 2;輸入 y 回車,值為 4。而如果我們嘗試輸入 1 = x,或者 1 = 1,Python 解釋器會向我們提示說存在 SyntaxError,也就是語法錯誤,因為等號左邊不是一個變數。再比如我們嘗試輸入 x = not_exist * 2,這時 Python 解釋器向我們提示發生了 NemaError,因為等號右邊的變數 not_exist 是不存在的,自然無法求值。而如果我們輸入 x = x + 1,Python 就不會報錯了。雖然把 x = x + 1 看做一個數學式子的話很荒謬,但是我們要理解這裡的等號並不等同於數學上的等號。這個表達式要從右向左理解,它是先把變數 x 的值拿出來,這時 x 是 2,然後計算 2 + 1 得到結果為 3,再把 3 這個結果賦予給變數 x。所以我們現在輸入 x 回車,發現 x 已經變成 3 了。

賦值運算和上面的數學運算結合,有一些簡便的寫法。例如我們可以輸入 x += 1,這個操作符的實際效果等效於上面這個 x = x + 1;回車,這時我們看 x(輸入),回車,發現 x 的值已經等於 4 了;類似的,還可以使用 x -= 2,回車,然後我們看 x 這時已經是 2 了;繼續,x *= 6,回車,可以看到 x,這時已經等於 12;然後 x /= 3,回車,我們發現這時 x 變成了 4.0。同樣地取整除法,取模和求冪運算都支持這種簡寫方式,大家不妨在自己的 Python Shell 里試一試吧。

另一個 Python 中常見的數學運算是比較運算,這些也是我們在數學中常見的運算,包括等於、不等於、大於、小於、大於等於和小於等於。使用比較運算可以寫出來比較語句,例如:

我們先重新給變數 x 賦值為 1 (邊說邊輸入 x = 1,回車)。然後輸入 x == 1,回車,可以看到結果為 True,這裡兩個等號連寫就不再是賦值操作,而是比較操作了。上面這個語句的意思是比較 x 是否等於 1,結果為 True,也就是 x 確實等於 1;然後我們再試一下 2 == x,回車,結果是 False。我們再來試一下其他的操作符,如 3 != x,意思是比較 3 是否不等於 x,答案是 True,因為 x 確實不等於 3;然後輸入 x > 0,回車,答案為 True;再輸入 x < 0.5,回車,答案是 False;最後,我們試一試輸入 x >= 1,答案是 True,這個操作符比較左邊是否大於或者等於右邊;與之對應的還有(輸入) x <= 2,答案自然也是 True。

除了數學計算,可樂再為大家介紹 Python 編程中另一個常見的計算,也就是邏輯運算——與、或、非。在 Python 中,邏輯運算操作符就使用它們對應的英語單詞,與就是 and,或就是 or,而非就是 not。

邏輯運算的對象是布爾值,也就是上面我們見到過的 True 和 False。和整數是 int 類型,浮點數是 float 類型類似,布爾值在 Python 中的類型是 bool 類型。例如,我們輸入 type(False) 回車,就可以看到 False 是 bool 類型。我們上面介紹的比較運算符進行的比較運算就會產生 bool 類型的結果 True 或者 False,

例如我們試一下 type(2 > 1),它的結果就是 bool 類型。

布爾值和邏輯運算非常簡單,例如我們輸入 not True,結果就是 False;輸入 True and False,結果是 False;而輸入 True or False 結果則是 True。如果你還不熟悉邏輯運算的規則,那麼請自行搜索一下,或者複習一下中學數學裡的相關內容哦。

在計算機的世界裡,經常使用數字 1 表示 True,數字 0 表示 False。在 Python 中,如果你對 True 和 False 做一些奇怪的數學計算,那麼 Python 就會把 True 當作 1,False 當作 0。例如我們看一下 True * 2,回車,結果是 2;而 True + False,回車,結果是 1。可樂不建議你這麼來寫代碼,因為大部分情況下這種代碼並沒有什麼意義。

事實上,and, or 和 not 邏輯運算符也不止能對布爾值進行運算,還能對數字數值進行運算。在我們的初級課程里,可樂就不為大家介紹這些了,我們先學會基本的用法即可。

除了上面介紹到的這些之外,Python 中還有身份運算符 is,成員運算符 in 以及位運算符。這些內容需要後續的知識來幫助大家理解,因此可樂會把他們放在後面的課程中。

好了,本節課的內容我們就先介紹到這裡。通過這節課的內容,我們了解了 Python 中的數學許多基礎運算,以及非常常見的賦值運算。到這裡,Python Shell 對你而言已經成為了一個順手而好用的計算器。可樂希望大家多和 Python Shell 一起玩耍,熟悉一下 Python 語言的這些特性。

在下一節課程中,我們會暫時告別這些數學計算,可樂將為大家介紹 Python 中另一個非常重要的概念——字元串。敬請期待哦,我們下期見。


推薦閱讀:

零基礎學水彩|色彩的基礎知識(一)
0基礎學Python之十二:列表(中)
零基礎繪畫教程—彩鉛《藍色妖姬》
水彩入門|管彩、固彩、液體水彩顏料的區別
司考經——你沒有想像中弱

TAG:零基礎 | Python | 編程 |