測試題
1. int
函數總是向下取整(這個數左邊的最大整數)。
2. 在我們的溫度轉換程序中,可以這樣做嗎?
cel = float(5 / 9 * (fahr - 32))cel = 5 / 9 * float(fahr - 32)
試試看,會發生什麼:
>>> fahr = 75>>> cel = float(5 / 9 * (fahr - 32))>>> print cel0.0
為什麼不能正常工作?
要記住,括號裡的一切會先完成。所以它會先這樣:
75 - 32 = 43
然後再這樣做:
5 / 9 = 0
因為它會從左到右計算,所以先完成 5/9
。因為 5 和 9 都是整數,所以 Python 會完成整除,將答案向下取整。由於這個答案小於 1,所以會取整為 0。然後得到:
0 * 43 = 0
接下來:
float(0) = 0.0
執行到 float
時,已經太晚了——答案已經是 0 了!第二個公式也一樣。
3. 可以「騙過」int
,讓它四捨五入而不是向下取整,只需將傳入 int
的數加 0.5。
右面是一個例子(交互模式中
>>> a = 13.2>>> roundoff = int(a + 0.5)>>> roundoff 13>>> b = 13.7>>> roundoff = int(b + 0.5)>>> b 14
如果原先的數小於 13.5,int
會得到一個小於 14 的數,這會向下取整為 13。
如果原來的數大於或者等於 13.5,int
會得到一個等於或者大於 14 的數,這就會向下取整為 14。
動手試一試
1. 可以使用 float
將字符串轉換為小數:
>>> a = float('12.34')>>> print a12.34
不過我們怎麼能知道這是數而不是字符串呢?下面來檢查類型:
>>> type(a)<type 'float'>
2. 可以使用 int
把小數轉換為整數:
>>> print int(56.78)56
結果會向下取整。
3. 可以使用 int
把字符串轉換為整數:
>>> a = int('75')>>> print a75>>> type(a)<type 'int'>