1. 程式人生 > >python隨筆7(while循環)

python隨筆7(while循環)

site inpu print which ice app 任務 poll !=

使用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循環)