讀古今文學網 > 父與子的編程之旅:與小卡特一起學Python > 3.1 四大基本運算 >

3.1 四大基本運算

在第 1 章中我們已經看到 Python 可以做一些數學運算:使用加號(+)完成加法,另外使用星號(*)完成乘法。

如你所料,Python 使用連字號(-)(也稱為減號)來做減法:

>>> print 8 - 53  

由於計算機鍵盤上沒有除號(÷),所以所有程序都使用前斜槓(/)表示除法。

>>> print 6/23  

這是對的。不過有時 Python 做除法時會得到意外的結果:

>>> print 3/21  

咦?我還以為計算機精通數學計算呢,原來不過如此!所有人都知道

3 / 2 = 1.5  

這到底怎麼回事?

嗯,雖然看起來好像很傻,其實 Python 確實想表現得聰明一些。要解釋這個問題,你要知道整數和小數。如果你還不知道它們的區別,先來看看術語箱中簡單的解釋。

術語箱

整數(integer)就是我們平常數數時所說的數,如 1、2、3,另外還包括 0 和負數,如 -1、-2、-3。

小數(decimal number)也稱為實數(real number),這些數有小數點而且後面有小數位,如 1.25、0.3752 和 -101.2。

在計算機編程中,小數也稱為浮點數(floating-point number,有時簡寫為 floats,或者如果只有一個浮點數,就簡寫為 float)。這是因為小數點會「浮動」。0.00123456 或 12345.6 都是浮點數。

因為你輸入的 3 和 2 都是整數,所以 Python 認為你同樣想要整數作為答案。所以它會把答案 1.5 取整為比它小且最接近的整數,也就是 1。換句話說,Python 完成了不帶餘數的除法。

要解決這個問題,可以這樣試試看:

>>> print 3.0 / 21.5  

這樣就好多了!如果把兩個數中的任何一個作為小數輸入,Python 就會知道你想在答案中保留小數部分。

整除

在 Python 2 中,做除法的方式稱為「整除」(floor pision)。但 Python 3 的工作方式不一樣,在 Python 3 中,如果你使用常規的除法操作符(前斜槓「/」),則做的是常規除法,而不是整除。

>>> print 3/21.5  

要在 Python 3 中做整除,需要使用兩個前斜槓(//):

>>> print 3//21  

這是 Python 2 和 Python 3 最顯著的區別之一,也是導致很多 Python 2 程序與 Python 3 程序不兼容的原因。

 

切記!

要記住 Python 2 的這種整除行為。這很重要,很多 Python 程序員(包括我自己)都曾經因為忘記這一點犯過錯。