## 使用者輸入
大多數程式都旨在解決終端使用者的問題,為此通常需要從使用者那裡獲取一些資訊。例如,假設有人要判斷自己是否到了投票的年齡,要編寫回答這個問題的程式,就需要知道使用者的年齡,這樣才能給出
答案。因此,這種程式需要讓使用者輸入其年齡,再將其與投票年齡進行比較,以判斷使用者是否到了投票的年齡,再給出結果。
在本章中,你將學習如何接受使用者輸入,讓程式能夠對其進行處理。在程式需要乙個名字時,你需要提示使用者輸入該名字;程式需要乙個名單時,你需要提示使用者輸入一系列名字。為此,你需要使用函
數input()。
你還將學習如何讓程式不斷地執行,讓使用者能夠根據需要輸入資訊,並在程式中使用這些資訊。為此,你需要使用while迴圈讓程式不斷地執行,直到指定的條件不滿足為止。通過獲取使用者輸入並學會控制程式的執行時間,可編寫出互動式程式。
## 函式 input()使用者輸入
函式input()讓程式暫停執行,等待使用者輸入一些文字。獲取使用者輸入後, python將其儲存在乙個變數中,以方便你使用。
例如,下面的程式讓使用者輸入一些文字,再將這些文字呈現給使用者:
parrot.py
message = input("tell me something, and i will repeat it back to you: ")
print(message)
函式input()接受乙個引數:即要向使用者顯示的提示或說明,讓使用者知道該如何做。在這個示例中, python執行第1行**時,使用者將看到提示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: hello everyone!
hello everyone!
注意 sublime text不能執行提示使用者輸入的程式。你可以使用sublime text來編寫提示使用者輸入的程式,但必須從終端執行它們。
## 編寫清晰的程式
每當你使用函式input()時,都應指定清晰而易於明白的提示,準確地指出你希望使用者提供什麼樣的資訊——指出使用者該輸入任何資訊的提示都行,如下所示:
greeter.py
name = input("please enter your name: ")
print("hello, " + name + "!")
通過在提示末尾(這裡是冒號後面)包含乙個空格,可將提示與使用者輸入分開,讓使用者清楚地知道其輸入始於何處,如下所示:
please enter your name: eric
hello, eric!
有時候,提示可能超過一行,例如,你可能需要指出獲取特定輸入的原因。在這種情況下,可將提示儲存在乙個變數中,再將該變數傳遞給函式input()。這樣,即便提示超過一行, input()語句也非常清晰。
greeter.py
prompt = "if you tell us who you are, we can personalize the messages you see."
prompt += "\nwhat is your first name? "
name = input(prompt)
print("\nhello, " + name + "!")
這個示例演示了一種建立多行字串的方式。第1行將訊息的前半部分儲存在變數prompt中;在第2行中,運算子+=在儲存在prompt中的字串末尾附加乙個字串。
最終的提示橫跨兩行,並在問號後面包含乙個空格,這也是出於清晰考慮:
if you tell us who you are, we can personalize the messages you see.
what is your first name? eric
hello, eric!
## 使用 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 "", line 1, in
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()呢?請看下面的程式,它判斷乙個人是否滿足坐過山車的身高要求:
rollercoaster.py
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!
將數值輸入用於計算和比較前,務必將其轉換為數值表示。
## 求模運算子
處理數值資訊時,求模運算子(%)是乙個很有用的工具,它將兩個數相除並返回餘數:
>>> 4 % 3
>>> 5 % 3
>>> 6 % 3
>>> 7 % 3
求模運算子不會指出乙個數是另乙個數的多少倍,而只指出餘數是多少。
如果乙個數可被另乙個數整除,餘數就為0,因此求模運算子將返回0。你可利用這一點來判斷乙個數是奇數還是偶數:
even_or_odd.py
number = input("enter a number, and i'll tell you if it's even or odd: ")
number = int(number)
if number % 2 == 0:
print("\nthe number " + str(number) + " is even.")
else:
print("\nthe number " + str(number) + " is odd.")
偶數都能被2整除,因此對乙個數( number)和2執行求模運算的結果為零,即number % 2 ==
0,那麼這個數就是偶數;否則就是奇數。
enter a number, and i'll tell you if it's even or odd: 42
the number 42 is even.
python使用者輸入
使用者輸入 python2.0 name raw input input your name raw input 輸入接收的是字串和數字,python都認為是字串。並賦值給name name input input your age input 輸入接收的是數字和字元,input python認為輸...
python 使用者輸入
範例1 我們希望整數 整數 這就是為什麼我們使用int 函式。x int raw input enter x y int raw input enter y sum x y print sum 輸出 enter x 33 enter y 556 589如果想要輸入浮點數,那麼應該使用 float r...
暫停程式 等待使用者輸入 Python使用者輸入
大多數程式都旨在解決終端使用者的問題,為此就需要獲取使用者的資訊。假如你要判斷小孩是否需要購買全價票,就需要獲取小孩的身高,這樣才能得出正確的結論。因此這種程式就需要讓使用者輸入其身高,再與規定的身高值進行比較,最後得出結果。python使用函式input 接受使用者輸入。從此刻開始,我們一起學習怎...