讀古今文學網 > 父與子的編程之旅:與小卡特一起學Python > 第4章 >

第4章

測試題

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'>