申明: 本站飛宇網 https://feiyetopro.blogspot.com/。自網路收集整理之書籍、文章、影音僅供預覽交流學習研究,其[書籍、文章、影音]情節內容, 評論屬其個人行為, 與本網站無關。版權歸原作者和出版社所有,請在下載 24 小時內刪除,不得用作商業用途;如果您喜歡其作品,請支持訂閱購買[正版]。謝謝!
第 7 章 用戶輸入和while 迴圈
大多數程式都旨在解決最終使用者的問題,為此通常需要從使用者那裡獲取一些資訊。例如,假設有人要判斷自己是否到了投票的年齡,要編寫回答這個問題的程式,就需要知道使用者的年齡,這樣才能給出答案。因此,這種程式需要讓使用者輸入 其年齡,再將其與投票年齡進行比較,以判斷用戶是否到了投票的年齡,再給出結果。
在本章中,你將學習如何接受使用者輸入,讓程式能夠對其進行處理。在程式需要一個名字時,你需要提示使用者輸入該名字;程式需要一個名單時,你需要提示使用者輸入一系列名字。為此,你需要使用函數input() 。
你還將學習如何讓程式不斷地運行,讓使用者能夠根據需要輸入資訊,並在程式中使用這些資訊。為此,你需要使用while 迴圈讓程式不斷地運行,直到指定的條件不滿足為止。
通過獲取使用者輸入並學會控制程式的執行時間,可編寫出互動式程式。
7.1 函數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來編寫提示使用者輸入的程式,但必須從終端運行它們。詳情請參閱1.4節。
7.1.1 編寫清晰的程式
每當你使用函數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!
7.1.2 使用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() 呢?請看下面的程式,它判斷一個人是否滿足坐過山車的身高要求:
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!
將數值輸入用於計算和比較前,務必將其轉換為數值表示。
7.1.3 求模運算子
處理數值資訊時,求模運算子 (%)是一個很有用的工具,它將兩個數相除並返回餘數:
>>>
4 % 3
1
>>>
5 % 3
2
>>>
6 % 3
0
>>>
7 % 3
1
求模運算子不會指出一個數是另一個數的多少倍,而只指出餘數是多少。
如果一個數可被另一個數整除,餘數就為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.
7.1.4 在Python 2.7中獲取輸入
如果你使用的是Python 2.7,應使用函數raw_input() 來提示用戶輸入。這個函數與Python 3中的input() 一樣,也將輸入解讀為字串。
Python 2.7也包含函數input() ,但它將用戶輸入解讀為Python代碼,並嘗試運行它們。因此,最好的結果是出現錯誤,指出Python不明白輸入的代碼;而最糟的結果是,將運行你原本無意運行的代碼。如果你使用的是Python 2.7,請使用raw_input() 而不是input() 來獲取輸入。
動手試一試
7-1 汽車租賃 :編寫一個程式,詢問使用者要租賃什麼樣的汽車,並列印一條消息,如“Let me see if I can find you a Subaru”。
7-2 餐館訂位 :編寫一個程式,詢問使用者有多少人用餐。如果超過8人,就列印一條消息,指出沒有空桌;否則指出有空桌。
7-3 10的整數倍 :讓使用者輸入一個數位,並指出這個數位是否是10的整數倍。
7.2 while 迴圈簡介
for 迴圈用於針對集合中的每個元素都一個代碼塊,而while 迴圈不斷地運行,直到指定的條件不滿足為止。
7.2.1 使用while 迴圈
你可以使用while 迴圈來數數,例如,下面的while 迴圈從1數到5:
counting.py
current_number
= 1
while
current_number <= 5:
print(current_number)
current_number += 1
在第1行,我們將current_number 設置為1,從而指定從1開始數。接下來的while 迴圈被設置成這樣:只要current_number 小於或等於5,就接著運行這個迴圈。迴圈中的代碼列印current_number 的值,再使用代碼current_number += 1 (代碼current_number = current_number + 1 的簡寫)將其值加1。
只要滿足條件current_number <= 5 ,Python就接著運行這個迴圈。由於1小於5,因此Python列印1 ,並將current_number 加1,使其為2 ;由於2小於5,因此Python列印2 ,並將current_number 加1 ,使其為3 ,以此類推。一旦current_number 大於5,迴圈將停止,整個程式也將到此結束:
1
2
3
4
5
你每天使用的程式很可能就包含while 迴圈。例如,遊戲使用while 迴圈,確保在玩家想玩時不斷運行,並在玩家想退出時停止運行。如果程式在使用者沒有讓它停止時停止運行,或者在用戶要退出時還繼續運行,那就太沒有意思了;有鑑於此,while 迴圈很有用。
7.2.2 讓用戶選擇何時退出
可使用while 迴圈讓程式在使用者願意時不斷地運行,如下面的程式parrot.py所示。我們在其中定義了一個退出值,只要用戶輸入的不是這個值,程式就接著運行:
parrot.py
❶ 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)
現在,程式在顯示消息前將做簡單的檢查,僅在消息不是退出值時才列印它:
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
7.2.3 使用標誌
在前一個示例中,我們讓程式在滿足指定條件時就執行特定的任務。但在更複雜的程式中,很多不同的事件都會導致程式停止運行;在這種情況下,該怎麼辦呢?
例如,在遊戲中,多種事件都可能導致遊戲結束,如玩家一艘飛船都沒有了或要保護的城市都被摧毀了。導致程式結束的事件有很多時,如果在一條while 語句中檢查所有這些條件,將既複雜又困難。
在要求很多條件都滿足才繼續運行的程式中,可定義一個變數,用於判斷整個程式是否處於活動狀態。這個變數被稱為標誌 ,充當了程式的交通信號燈。你可讓程式在標誌為True 時繼續運行,並在任何事件導致標誌的值為False 時讓程式停止運行。這樣,在while 語句中就只需檢查一個條件——標誌的當前值是否為True ,並將所有測試(是否發生了應將標誌設置為False 的事件)都放在其他地方,從而讓程式變得更為整潔。
下麵來在前一節的程式parrot.py中添加一個標誌。我們把這個標誌命名為active (可給它指定任何名稱),它將用於判斷程式是否應繼續運行:
prompt = "\nTell me something, and I
will repeat it back to you:"
prompt
+= "\nEnter 'quit' to end the program. "
❶ active =
True
❷ while
active:
message = input(prompt)
❸ if message == 'quit':
active = False
❹ else:
print(message)
我們將變數active 設置成了True (見❶),讓程式最初處於活動狀態。這樣做簡化了while 語句,因為不需要在其中做任何比較——相關的邏輯由程式的其他部分處理。只要變數active 為True ,迴圈就將繼續運行(見❷)。
在while 迴圈中,我們在用戶輸入後使用一條if 語句來檢查變數message 的值。如果用戶輸入的是'quit' (見❸),我們就將變數active 設置為False ,這將導致while 迴圈不再繼續執行。如果用戶輸入的不是'quit' (見❹),我們就將輸入作為一條消息列印出來。
這個程式的輸出與前一個示例相同。在前一個示例中,我們將條件測試直接放在了while 語句中,而在這個程式中,我們使用了一個標誌來指出程式是否處於活動狀態,這樣如果要添加測試(如elif 語句)以檢查是否發生了其他導致active 變為False 的事件,將很容易。在複雜的程式中,如很多事件都會導致程式停止運行的遊戲中,標誌很有用:在其中的任何一個事件導致活動標誌變成False 時,主遊戲迴圈將退出,此時可顯示一條遊戲結束消息,並讓使用者選擇是否要重新玩。
7.2.4 使用break 退出迴圈
要立即退出while 迴圈,不再運行迴圈中餘下的代碼,也不管條件測試的結果如何,可使用break 語句。break 語句用於控制程式流程,可使用它來控制哪些代碼行將執行,哪些代碼行不執行,從而讓程式按你的要求執行你要執行的代碼。
例如,來看一個讓用戶指出他到過哪些地方的程式。在這個程式中,我們可以在用戶輸入'quit' 後使用break 語句立即退出while 迴圈:
cities.py
prompt = "\nPlease enter the name of a
city you have visited:"
prompt += "\n(Enter 'quit' when you are
finished.) "
❶ while
True:
city = input(prompt)
if city == 'quit':
break
else:
print("I'd love to go to "
+ city.title() + "!")
以while True 打頭的迴圈(見❶)將不斷運行,直到遇到break 語句。這個程式中的迴圈不斷輸入使用者到過的城市的名字,直到他輸入'quit' 為止。用戶輸入'quit' 後,將執行break 語句,導致Python退出迴圈:
Please
enter the name of a city you have visited:
(Enter
'quit' when you are finished.) New York
I'd
love to go to New York!
Please
enter the name of a city you have visited:
(Enter
'quit' when you are finished.) San Francisco
I'd
love to go to San Francisco!
Please
enter the name of a city you have visited:
(Enter
'quit' when you are finished.) quit
注意 在任何Python迴圈中都可使用break 語句。例如,可使用break 語句來退出遍歷清單或字典的for 迴圈。
7.2.5 在迴圈中使用continue
要返回到迴圈開頭,並根據條件測試結果決定是否繼續執行迴圈,可使用continue 語句,它不像break 語句那樣不再執行餘下的代碼並退出整個迴圈。例如,來看一個從1數到10,但只列印其中偶數的迴圈:
counting.py
current_number = 0
while current_number < 10:
❶ current_number += 1
if current_number % 2 == 0:
continue
print(current_number)
我們首先將current_number 設置成了0,由於它小於10,Python進入while 迴圈。進入迴圈後,我們以步長1的方式往上數(見❶),因此current_number 為1。接下來,if 語句檢查current_number 與2的求模運算結果。如果結果為0(意味著current_number 可被2整除),就執行continue 語句,讓Python忽略餘下的代碼,並返回到迴圈的開頭。如果當前的數字不能被2整除,就執行迴圈中餘下的代碼,Python將這個數字列印出來:
1
3
5
7
9
7.2.6 避免無限迴圈
每個while 迴圈都必須有停止運行的途徑,這樣才不會沒完沒了地執行下去。例如,下麵的迴圈從1數到5:
counting.py
x = 1
while
x <= 5:
print(x)
x += 1
但如果你像下面這樣不小心遺漏了代碼行x += 1 ,這個迴圈將沒完沒了地運行:
# 這個迴圈將沒完沒了地運行!
x = 1
while
x <= 5:
print(x)
在這裡,x 的初始值為1 ,但根本不會變,因此條件測試x
<= 5 始終為True ,導致while 迴圈沒完沒了地列印1 ,如下所示:
1
1
1
1
--snip--
每個程式師都會偶爾因不小心而編寫出無限迴圈,在迴圈的退出條件比較微妙時尤其如此。如果程式陷入無限迴圈,可按Ctrl + C,也可關閉顯示程式輸出的終端視窗。
要避免編寫無限迴圈,務必對每個while 迴圈進行測試,確保它按預期那樣結束。如果你希望程式在使用者輸入特定值時結束,可運行程式並輸入這樣的值;如果在這種情況下程式沒有結束,請檢查程式處理這個值的方式,確認程式至少有一個這樣的地方能讓迴圈條件為False 或讓break 語句得以執行。
注意 有些編輯器(如Sublime Text)內嵌了輸出視窗,這可能導致難以結束無限迴圈,因此不得不關閉編輯器來結束無限迴圈。
動手試一試
7-4 比薩配料 :編寫一個迴圈,提示用戶輸入一系列的比薩配料,並在用戶輸入'quit' 時結束迴圈。每當用戶輸入一種配料後,都列印一條消息,說我們會在比薩中添加這種配料。
7-5 電影票 :有家電影院根據觀眾的年齡收取不同的票價:不到3歲的觀眾免費;3~12歲的觀眾為10美元;超過12歲的觀眾為15美元。請編寫一個迴圈,在其中詢問用戶的年齡,並指出其票價。
7-6 三個出口 :以另一種方式完成練習7-4或練習7-5,在程式中採取如下所有做法。
·
在while 迴圈中使用條件測試來結束迴圈。
·
使用變數active 來控制迴圈結束的時機。
·
使用break 語句在用戶輸入'quit' 時退出迴圈。
7-7 無限迴圈 :編寫一個沒完沒了的迴圈,並運行它(要結束該迴圈,可按Ctrl +C,也可關閉顯示輸出的視窗)。
7.3 使用while 迴圈來處理清單和字典
到目前為止,我們每次都只處理了一項使用者資訊:獲取用戶的輸入,再將輸入列印出來或作出應答;迴圈再次運行時,我們獲悉另一個輸入值並作出回應。然而,要記錄大量的使用者和資訊,需要在while 迴圈中使用清單和字典。
for 迴圈是一種遍歷清單的有效方式,但在for 迴圈中不應修改列表,否則將導致Python難以跟蹤其中的元素。要在遍歷列表的同時對其進行修改,可使用while 迴圈。通過將while 迴圈同清單和字典結合起來使用,可收集、存儲並組織大量輸入,供以後查看和顯示。
7.3.1 在清單之間移動元素
假設有一個列表,其中包含新註冊但還未驗證的網站用戶;驗證這些用戶後,如何將他們移到另一個已驗證用戶列表中呢?一種辦法是使用一個while 迴圈,在驗證用戶的同時將其從未驗證用戶列表中提取出來,再將其加入到另一個已驗證用戶列表中。代碼可能類似於下面這樣:
confirmed_users.py
# 首先,創建一個待驗證用戶列表
# 和一個用於存儲已驗證使用者的空列表
❶
unconfirmed_users = ['alice', 'brian', 'candace']
confirmed_users = []
# 驗證每個用戶,直到沒有未驗證用戶為止
# 將每個經過驗證的列表都移到已驗證用戶列表中
❷ while
unconfirmed_users:
❸ current_user = unconfirmed_users.pop()
print("Verifying user: " +
current_user.title())
❹ confirmed_users.append(current_user)
# 顯示所有已驗證的使用者
print("\nThe following users have been
confirmed:")
for confirmed_user in confirmed_users:
print(confirmed_user.title())
我們首先創建了一個未驗證用戶列表(見❶),其中包含用戶Alice、Brian和Candace,還創建了一個空清單,用於存儲已驗證的使用者。❷處的while 迴圈將不斷地運行,直到列表unconfirmed_users 變成空的。在這個迴圈中,❸處的函數pop() 以每次一個的方式從清單unconfirmed_users 末尾刪除未驗證的用戶。由於Candace位於列表unconfirmed_users 末尾,因此其名字將首先被刪除、存儲到變數current_user 中並加入到列表confirmed_users 中(見❹)。接下來是Brian,然後是Alice。
為模擬用戶驗證過程,我們列印一條驗證消息並將使用者加入到已驗證用戶列表中。未驗證用戶列表越來越短,而已驗證用戶列表越來越長。未驗證用戶列表為空後結束迴圈,再列印已驗證用戶列表:
Verifying
user: Candace
Verifying
user: Brian
Verifying
user: Alice
The
following users have been confirmed:
Candace
Brian
Alice
7.3.2 刪除包含特定值的所有清單元素
在第3章中,我們使用函數remove() 來刪除列表中的特定值,這之所以可行,是因為要刪除的值在列表中只出現了一次。如果要刪除清單中所有包含特定值的元素,該怎麼辦呢?
假設你有一個寵物列表,其中包含多個值為'cat' 的元素。要刪除所有這些元素,可不斷運行一個while 迴圈,直到列表中不再包含值'cat' ,如下所示:
pets.py
pets
= ['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']
print(pets)
while
'cat' in pets:
pets.remove('cat')
print(pets)
我們首先創建了一個列表,其中包含多個值為'cat' 的元素。列印這個列表後,Python進入while 迴圈,因為它發現'cat' 在列表中至少出現了一次。進入這個迴圈後,Python刪除第一個'cat' 並返回到while 代碼行,然後發現'cat' 還包含在列表中,因此再次進入迴圈。它不斷刪除'cat' ,直到這個值不再包含在列表中,然後退出迴圈並再次列印列表:
['dog',
'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']
['dog',
'dog', 'goldfish', 'rabbit']
7.3.3 使用使用者輸入來填充字典
可使用while迴圈提示使用者輸入任意數量的資訊。下面來創建一個調查程式,其中的迴圈每次執行時都提示輸入被調查者的名字和回答。我們將收集的資料存儲在一個字典中,以便將回答同被調查者關聯起來:
mountain_poll.py
responses = {}
# 設置一個標誌,指出調查是否繼續
polling_active = True
while polling_active:
# 提示輸入被調查者的名字和回答
❶ name = input("\nWhat is your name?
")
response = input("Which mountain
would you like to climb someday? ")
# 將答卷存儲在字典中
❷ responses[name] = response
# 看看是否還有人要參與調查
❸ repeat = input("Would you like to let
another person respond? (yes/ no) ")
if repeat == 'no':
polling_active = False
# 調查結束,顯示結果
print("\n--- Poll Results ---")
❹ for name,
response in responses.items():
print(name + " would like to climb
" + response + ".")
這個程式首先定義了一個空字典(responses ),並設置了一個標誌(polling_active ),用於指出調查是否繼續。只要polling_active 為True ,Python就運行while 迴圈中的代碼。
在這個迴圈中,提示用戶輸入其用戶名及其喜歡爬哪座山(見❶)。將這些資訊存儲在字典responses 中(見❷),然後詢問用戶調查是否繼續(見❸)。如果使用者輸入yes ,程式將再次進入while 迴圈;如果使用者輸入no ,標誌polling_active 將被設置為False ,而while 迴圈將就此結束。最後一個代碼塊(見❹)顯示調查結果。
如果你運行這個程式,並輸入一些名字和回答,輸出將類似於下面這樣:
What
is your name? Eric
Which
mountain would you like to climb someday? Denali
Would
you like to let another person respond? (yes/ no) yes
What
is your name? Lynn
Which
mountain would you like to climb someday? Devil's Thumb
Would
you like to let another person respond? (yes/ no) no
---
Poll Results ---
Lynn
would like to climb Devil's Thumb.
Eric
would like to climb Denali.
動手試一試
7-8 熟食店 :創建一個名為sandwich_orders 的列表,在其中包含各種三明治的名字;再創建一個名為finished_sandwiches 的空列表。遍歷列表sandwich_orders ,對於其中的每種三明治,都列印一條消息,如I made
your tuna sandwich ,並將其移到列表finished_sandwiches 。所有三明治都製作好後,列印一條消息,將這些三明治列出來。
7-9 五香煙熏牛肉(pastrami)賣完了 :使用為完成練習7-8而創建的列表sandwich_orders ,並確保'pastrami' 在其中至少出現了三次。在程式開頭附近添加這樣的代碼:列印一條消息,指出熟食店的五香煙熏牛肉賣完了;再使用一個while 迴圈將列表sandwich_orders 中的'pastrami' 都刪除。確認最終的列表finished_sandwiches 中不包含'pastrami' 。
7-10 夢想的度假勝地 :編寫一個程式,調查使用者夢想的度假勝地。使用類似於“If you could visit one place in the
world, where would you go?”的提示,並編寫一個列印調查結果的代碼塊。
7.4 小結
在本章中,你學習了:如何在程式中使用input() 來讓使用者提供資訊;如何處理文本和數位輸入,以及如何使用while 迴圈讓程式按使用者的要求不斷地運行;多種控制while 迴圈流程的方式:設置活動標誌、使用break 語句以及使用continue 語句;如何使用while 迴圈在清單之間移動元素,以及如何從清單中刪除所有包含特定值的元素;如何結合使用while 迴圈和字典。
在第8章中,你將學習函數。函數讓你能夠將程式分成多個很小的部分,其中每部分都負責完成一項具體任務。你可以根據需要調用同一個函數任意次,還可將函數存儲在獨立的檔中。使用函數可讓你編寫的代碼效率更高,更容易維護和排除故障,還可在眾多不同的程式中重用。

0 留言:
發佈留言