函式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: FuladeHello, 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 >= 18Traceback (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 >= 18True複製程式碼
在這個示例中,我們在提示時輸入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? 71You'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. quitquit 複製程式碼
這個程式很好,唯一美中不足的是,它將單詞 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) 複製程式碼
現在,程式在顯示訊息前將做簡單的檢查,僅在訊息不是退出值時才打印它。