python隨筆7(while循環)
使用while循環
你可以使用while循環來數數。
current_number = 1 while current_number <= 5: print(current_number) current_number += 1
讓用戶選擇何時退出
可使用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)
我們創建一個變量——message,用於存儲用戶輸入的值。我們將變量message的初始值設置為空字符串””,讓python首次執行while代碼時有可供檢查的東西。python首次執行while語句時,需要將message的值與’quit’進行比較,但此時用戶還沒有輸入。如果沒有可供比較的東西,python將無法繼續運行程序。為解決這個問題,我們必須給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 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)
程序在顯示消息前將做簡單的檢查,僅在消息不是退出值時才打印它。
使用標誌
在前一個示例,我們讓程序在滿足指定條件時就執行特定的任務。但在更復雜的程序中,很多不同的事件會導致程序停止運行,如果在一條while語句中檢查所有的事件將復雜而困難。
在要求很多條件都滿足才繼續運行的程序中,可定義一個變量,用於判斷整個程序是否處於活躍狀態。這個變量被稱為標誌。
你可以讓程序在標誌為True時繼續運行,並在任何事件導致標誌的值為False時讓程序停止。這樣while語句中就只需檢查一個條件——標誌的真假。從而讓程序便簡潔。
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語句。
使用break退出循環
要立即退出while循環,不再運行循環中的代碼,可使用break語句。break語句用於控制程序流程,可使用它控制哪些代碼執行,哪些不執行。
例如,來看一個讓用戶指出他到過哪些地方的程序。在這個程序中,我們可以在用戶輸入’quit’後使用break語句立刻退出while循環:
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() + "!")
在循環中使用continue
要返回到循環開頭,並根據條件測試結果決定是繼續執行循環,可使用continue語句。
例如,來看一個從1數到10,但只打印其中奇數的循環。
current_number = 0 while current_number < 10: current_number += 1 if current_number % 2 == 0: continue print(current_number)
避免無限循環
每個while循環都必須有停止運行的途徑,這樣才不會沒完沒了地執行下去。
使用while循環來處理列表和字典
for循環是一種遍歷列表的有效方式,但在for循環中不應該修改列表,否則將導致python難以跟蹤其中的元素。要在遍歷列表的同時對其進行修改,可使用while循環。通過將while循環同列表和字典結合起來使用,可收集,存儲並組織大量輸入,供以後查看和顯示。
在列表之間移動元素
假設有一個列表,其中包含新註冊但還未收到驗證的網站用戶;驗證這些用戶後,如何將他們移動到另一個已驗證用戶列表中呢?一種辦法是使用while循環,在驗證用戶的同時將其從未驗證用戶列表中提取出來,再將其加入到另一個已經驗證用戶列表中。
#首先,創建一個帶驗證用戶列表和一個用戶存儲已驗證用戶的空列表。 unconfirmed_users = [‘alice‘,‘brain‘,‘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())
我們首先創建了一個未驗證用戶列表,還創建一個空列表,用於存放已驗證用戶。while循環不斷運行,直到列表unconfirmed_users變為空。在這個循環中函數pop()以每次一個的方式從列表unconfirmed_users末尾刪除未驗證的用戶。
Verifying user: Candace
Verifying user: Brain
Verifying user: Alice
The following users have been confirmed:
Candace
Brain
Alice
刪除包含特定值的所有列表元素
假設你有一個寵物列表,其中包含多個值為’cat’的元素,要刪除所有這些元素,可不斷運行一個while循環。
pets = ["dog","cat","dog","goldfish","cat","rabbit","cat"] print(pets) while "cat" in pets: pets.remove("cat") print(pets)
[‘dog‘, ‘cat‘, ‘dog‘, ‘goldfish‘, ‘cat‘, ‘rabbit‘, ‘cat‘] [‘dog‘, ‘dog‘, ‘goldfish‘, ‘rabbit‘]
使用用戶輸入填充字典
可使用while循環提示用戶輸入任意數量的信息。下面來創建一個調查程序,其中的循環每次執行時都提示輸入被調查者的名字和回答。我們將收集的數據存在一個字典中,以便將回答同被調查者關聯起來。
responses = {} #設置一個標誌,指出調查是否繼續 polling_active = True while polling_active: #提示輸入被調查者的名字和回答 name = input("\nWhat is your name? ") response = input("Which mountain would you like to climb sunday? ") #將答案存儲在字典中 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 + ".")
python隨筆7(while循環)