讀古今文學網 > 父與子的編程之旅:與小卡特一起學Python > 5.3 輸入數字 >

5.3 輸入數字

我們已經見過如何使用 raw_input 來得到字符串。但是如果希望得到一個數該怎麼做呢?畢竟,我們之所以討論輸入,原本就是為了讓用戶為我們的溫度轉換程序輸入溫度。

如果你讀過第 4 章,應該已經知道答案了。可以從 raw_input 給我們的字符串使用 intfloat 函數創建一個數。可以像這樣:

temp_string = raw_inputfahrenheit = float(temp_string)  

先使用 raw_input 得到用戶的輸入(一個字符串)。然後使用 float 由這個字符串創建一個數。得到溫度(作為浮點數)後,為它指定名字 fahrenheit

不過還有一種簡便方法。只需一步就可以完成所有這些工作,如下:

fahrenheit = float(raw_input)  

所做的工作是一樣的。它由用戶得到字符串,然後從這個字符串創建一個數。這裡只是稍稍少寫一點代碼。

下面在我們的溫度轉換程序中使用這種方法。試著運行代碼清單 5-3 中的程序,看看會得到什麼。

代碼清單 5-3 使用 raw_input 轉換溫度

還可以把代碼清單 5-3 最後 3 行合併為一行,像這樣:

print "That is", celsius, "degrees Celsius"  

這實際上是之前 3 個 print 語句的簡寫形式。

結合 int 使用 raw_input

如果你希望用戶輸入的數總是整數(而不是小數),可以用 int 來轉換,例如:

response = raw_input("How many students are in your class: ")numberOfStudents = int(response)  

像(Python)程序員一樣思考

得到數字輸入還有一種方法。Python 2 有一個名叫 input 的函數,可以直接提供一個數,所以不必使用 intfloat 來轉換。我們在第 1 章的猜數程序中用過這個函數,因為這是從用戶得到一個數的最簡單的方法。

但為了保持一致,我們在本書的剩餘部分會始終使用 raw_input。而且,Python 3 中去除了 input 函數(可以直接獲取數字而不需要進行轉換),只有 raw_input。更令人感到混亂的是,Python 2 中的 raw_input 在 Python 3 中改名為 input,但它的功能仍然和你在這一章中見到的這個函數一樣,只會得到字符串。因為我們很清楚怎樣從一個字符串創建一個數,所以建議使用 raw_input,而不要用 Python 2 中的 input