在第 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 程序員(包括我自己)都曾經因為忘記這一點犯過錯。