【Python 1-12】Python手把手教程之——用戶輸入input函數


作者 | 弗拉德
來源 | 弗拉德(公眾號:fulade_me)

函數input()

函數input()讓程序暫停運行,等待用戶輸入一些文本。獲取用戶輸入后,Python將其存儲在一個變量中,以方便你使用。
例如,下面的程序讓用戶輸入一些文本,再將這些文本呈現給用戶:

message = input("Tell me something, and I will repeat it back to you: ")
print(message) 

函數input()接受一個參數:即要向用戶顯示的提示或說明,讓用戶知道該如何做。在這個示例中,用戶將看到提示Tell me something, and I will repeat it back to you:。程序等待用戶輸入,並在用戶按回車鍵后繼續運行。
輸入存儲在變量message中,接下來的print(message)將輸入呈現給用戶:

Tell me something, and I will repeat it back to you: This is Fulade!
This is Fulade! 

每當你使用函數input()時,都應指定清晰而易於明白的提示,准確地指出你希望用戶提供什么樣的信息——指出用戶該輸入任何信息的提示都行,如下所示:

name = input("Please enter your name: ")
print("Hello, " + name + "!") 

通過在提示末尾(這里是冒號后面)包含一個空格,可將提示與用戶輸入分開,讓用戶清楚地知道其輸入始於何處,如下所示:

Please enter your name: Fulade
Hello, Fulade! 

int()函數

使用函數input()時,Python將用戶輸入解讀為字符串。請看下面讓用戶輸入其年齡的解釋器會話

>>> age = input("How old are you? ")
How old are you? 21
>>> age
'21' 

用戶輸入的是數字21,但我們請求Python提供變量age的值時,它返回的是'21'——用戶輸入
的數值的字符串表示。我們怎么知道Python將輸入解讀成了字符串呢?因為這個數字用引號括起
了。
如果我們只想打印輸入,這一點問題都沒有;但如果你試圖將輸入作為數字使用,就會引發錯誤:

>>> age = input("How old are you? ")
How old are you? 21
>>> age >= 18
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: unorderable types: str() >= int()

你試圖將輸入用於數值比較時,Python會引發錯誤,因為它無法將字符串和整數進
行比較:不能將存儲在age中的字符串'21'與數值18進行比較。
為解決這個問題,可使用函數int(),它讓Python將輸入視為數值。函數int()將數字的字符
串表示轉換為數值表示,如下所示:

>>> age = input("How old are you? ")
How old are you? 21
>>> age = int(age)
>>> age >= 18
True

在這個示例中,我們在提示時輸入21后,Python將這個數字解讀為字符串,但隨后int()將這個字符串轉換成了數值表示。
這樣Python就能運行條件測試了:將變量age(它現在包含數值21)同18進行比較,看它是否大於或等於18。測試結果為True
如何在實際程序中使用函數int()呢?請看下面的程序,它判斷一個人是否滿足坐過山車的身高要求:

height = input("How tall are you, in inches? ")
height = int(height)
if height >= 36:
    print("\nYou're tall enough to ride!")
else: 
    print("\nYou'll be able to ride when you're a little older.") 

在這個程序中,為何可以將height同36進行比較呢?因為在比較前,height = int(height)
將輸入轉換成了數值表示。如果輸入的數字大於或等於36,我們就告訴用戶他滿足身高條件:

How tall are you, in inches? 71
You're tall enough to ride! 

將數值輸入用於計算和比較前,務必將其轉換為數值表示。

使用while推出

可使用while循環讓程序在用戶願意時不斷地運行,我們在其中定義了一個退出值,只要用戶輸入的不是這個值,程序就可以接着運行:

prompt = "\nTell me something, and I will repeat it back to you:"
prompt += "\nEnter 'quit' to end the program. "
message = ""
while message != 'quit':
    message = input(prompt)
    print(message) 

我們定義了一條提示消息,告訴用戶他有兩個選擇:要么輸入一條消息,要么輸
入退出值(這里為'quit')。

接下來,我們創建了一個變量——message,用於存儲用戶
輸入的值。我們將變量message的初始值設置為空字符串"",讓Python首次執行while代碼行時有可供檢查的東西。

Python首次執行while語句時,需要將message的值與'quit'進行比較,但此時用戶還沒有輸入。如果沒有可供比較的東西,Python將無法繼續運行程序。

為解決這個問題,我們必須給變量message指定一個初始值。雖然這個初始值只是一個空字符串,但符合要求,讓Python能夠執行while循環所需的比較。只要message的值不是'quit',這個循就會不斷運行。

首次遇到這個循環時,message是一個空字符串,因此Python進入這個循環。執行到代碼行message = input(prompt)時,Python顯示提示消息,並等待用戶輸入。

不管用戶輸入是什么,都 將存儲到變量message中並打印出來;接下來,Python重新檢查while語句中的條件。只要用戶輸入的不是單詞quit,Python就會再次顯示提示消息並等待用戶輸入。

等到用戶終於輸入quit后,Python停止執行while循環,而整個程序也到此結束:

Tell me something, and I will repeat it back to you:
Enter 'quit' to end the program. Hello everyone!
Hello everyone!
Tell me something, and I will repeat it back to you:
Enter 'quit' to end the program. Hello again. 
Hello again.
Tell me something, and I will repeat it back to you:
Enter 'quit' to end the program. quit
quit 

這個程序很好,唯一美中不足的是,它將單詞quit也作為一條消息打印了出來。為修復這種問題,只需使用一個簡單的if判斷:

prompt = "\nTell me something, and I will repeat it back to you:"
prompt += "\nEnter 'quit' to end the program. "
message = ""
while message != 'quit':
    message = input(prompt)
    if message != 'quit':
        print(message) 

現在,程序在顯示消息前將做簡單的檢查,僅在消息不是退出值時才打印它。

小作業
12.1 編寫一個程序,詢問用戶要咨詢什么樣的汽車,並打印一條消息,如"Let me see if I can find you a Subaru"。
12.2 餐館訂位:編寫一個程序,詢問用戶有多少人用餐。如果超過 8 人,就打印一條消息,指出沒有空桌;否則指出有空桌。
12.3 讓用戶輸入一個數字,並指出這個數字是否是 10 的整數倍。

想查看作業答案可以去我的Githu倉庫在文件夾12-1_12-3


公眾號


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM