在剛開始進行python開發(fā)的時候,我們的應(yīng)用程序總是只輸入一次執(zhí)行一遍就結(jié)束了,而我們常用的程序應(yīng)該是我們想退出的時候才會退出,這時候我們就需要使用循環(huán)來進行控制了,那么python怎么使用while循環(huán)來控制應(yīng)用退出時間呢?接下來這篇文章告訴你。
函數(shù)input()的工作原理
函數(shù)input()讓程序暫停運行,等待用戶輸入一些文本。獲取用戶輸入后,Python將其存儲在一個變量中,以方便使用。
prompt="if you tell us who you are , we can personlize the message you see."
prompt+="
What is your first name?"
name=input(prompt)
print("
Hello, "+name+"!")
if you tell us who you are , we can personlize the message you see.
What is your first name?Eric
Hello, Eric!
這個示例演示了一種創(chuàng)建多行字符串的方式。第1行將消息的前半部分存儲在變量prompt中;在第2行中,運算符+=在存儲在prompt中的字符串末尾附加一個字符串。
While循環(huán)簡介
for循環(huán)用于針對集合中的每一個元素都一個代碼塊,而while循環(huán)不斷的運行,直到指定的條件不滿足為止。
使用while循環(huán)
current_number=1
while current_number<=5:
print(current_number)
current_number+=1
1
2
3
4
5
在第一行,我們將current_number設(shè)置為1,從而指定從1開始數(shù)。接下來的while循環(huán)被設(shè)置成這樣:只要current_number小雨或等于5,就接著運行這個循環(huán)。循環(huán)中代碼打印current_number的值,在使用current_number+=1(current_number=current_number+1)將其值加1。
只要滿足條件current_number<=5,python就接著運行這個程序。
讓用戶選擇何時退出
可用while循環(huán)讓程序在用戶愿意時不斷地運行。
prompt="
Tell me something,and I will repeat it back to you:"
prompt+="
Enter '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.hi
hi
Tell me something,and I will repeat it back to you:
Enter 'quit' to end the program.quit
我們定義了一條提示消息,告訴用戶他有兩個選擇:要么輸入一條消息,要么輸入退出值。接下來,我們創(chuàng)建了一個變量——message,用于存儲用戶輸入的值。我們將變量message的初始值設(shè)置為空字符串“”,讓Python首次執(zhí)行while代碼行時有可供檢查的東西。Python首次執(zhí)行while語句時,需要將message的值與quit進行比較,但此時用戶還沒有輸入。如果沒有可供比較的東西,Python將無法運行程序。為解決這個問題,我們必須給變量message指定一個初始值。雖然這個初始值只是一個空字符串,但符合要求,讓Python能夠執(zhí)行循環(huán)while所需的東西。只要循環(huán)不是‘quit',這個循環(huán)就會不斷運行。
使用標志
在前一個示例中,我們讓程序在滿足指定條件時就執(zhí)行特定的任務(wù)。但在更復(fù)雜的程序中,很多不同的事件都會導(dǎo)致程序停止運行;在這種情況下,該怎么辦呢?
在要求很多條件都滿足才繼續(xù)運行的程序中,可定義一個變量,用于判斷整個程序是否處于活動狀態(tài)。這個變量被稱為標志,充當了程序的交通信號燈。你可讓程序在標志為true時繼續(xù)運行,并在任何事件導(dǎo)致標志的值為False時讓程序停止運行。這樣,在while語句中,就只需檢查一個條件——標志的當前值是否為true,并將所有測試都放在其它地方,從而讓程序變得更簡潔。
prompt="
Tell me something,and I will repeat it back to you:"
prompt+="
Enter 'quit' to end the program."
active=True
while active:
message=input(prompt)
if message=='quit':
active=False
else:
print(message)
Tell me something,and I will repeat it back to you:
Enter 'quit' to end the program.yes
yes
Tell me something,and I will repeat it back to you:
Enter 'quit' to end the program.quit
我們將變量設(shè)置為true,讓程序處于活躍狀態(tài)。這樣簡化了while語句,因為不需要在其中做任何比較——相關(guān)的邏輯由程序的其他部分處理。只要變量active為true,循環(huán)就繼續(xù)這樣運行。
在while循環(huán)中,我們在用戶輸入后使用一條if語句來檢查變量message的值。如果用戶輸入的是‘quit',我們就將變量active設(shè)置為False,這將導(dǎo)致while循環(huán)不再繼續(xù)下去。如果用戶輸入的不是‘quit',我們就輸入作為一條消息打印出來。
使用break退出循環(huán)
要立即退出循環(huán),不再運行循環(huán)中余下的代碼,也不管測試條件如何,可是用break語句。
prompt="
Tell me something,and I will repeat it back to you:"
prompt+="
Enter 'quit' to end the program."
while True:
message=input(prompt)
if message=='quit':
break
else:
print(message)
在循環(huán)中使用continue
要返回到循環(huán)開頭,并根據(jù)測試條件測試結(jié)果決定是否繼續(xù)執(zhí)行循環(huán),可使用continue語句,它不像break語句那樣不在執(zhí)行余下的代碼并退出整個循環(huán)。
current_number=0
while current_number<10:
current_number+=1
if current_number %2==0:
continue
print(current_number)
1
3
5
7
9
我們首先將current_number設(shè)置成了0,由于它小于10,Python進入while循環(huán)。進入循環(huán)后,以步長為1的方式往上數(shù),因此current_number為1。接下來,if語句檢查current_number與2的求模運算結(jié)果。結(jié)果為0,就執(zhí)行continue語句,讓Python忽略余下的代碼,并返回循環(huán)的開頭。如果當前的數(shù)字不能被2整除,就執(zhí)行循環(huán)中余下的代碼,Python將這個數(shù)字打印出來。
在列表之間移動元素
假設(shè)有一個列表,其中包含新注冊但還未驗證的網(wǎng)站用戶;驗證這些用戶后,如何將他們移動到另一個已驗證的用戶列表中呢?一種辦法是使用一個while循環(huán),在驗證用戶的同時將其從未驗證用戶列表中提取出來,再將其加入到另一個已驗證用戶列表中。代碼可能類似于下面這樣:
我們首先創(chuàng)建了一個未驗證用戶列表,其中包含Alice、Brain、和Candace,還創(chuàng)建了一個空列表,用于存儲以驗證的用戶。While循環(huán)不斷的運行,直到列表unconfirmed_users變成空的。在這個循環(huán)中,函數(shù)pop()以每次一個的方式從列表unconfirmed_user末尾刪除未驗證的用戶。由于Candace位于列表unconfirmed_users末尾,因此名字將首先被刪除、存儲到變量current_user中并加入到列表confirmed_users中。
為模擬用戶驗證過程,我們打印一條驗證消息并將用戶加入到已驗證用戶列表中。未驗證用戶列表越來越短,已驗證用戶列表越來越長。未驗證列表為空后結(jié)束循環(huán),再打印已驗證列表。
刪除包含特定值的所有列表元素
前面我們使用remove()來刪除列表中的特定元素,這之所以可行,是因為要刪除的值在列表中只出現(xiàn)了一次。如果要刪除列表中所有包含特定值的元素,該怎么辦呢?
假設(shè)你有一個寵物列表,其中包含多個值為‘cat'的元素。要刪除所有這些元素,可不斷運行一個while循環(huán),直到列表中不再包含值‘cat'.
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循環(huán)提示用戶輸入任意數(shù)量的信息。
responses={}
#設(shè)置一個標志,指出調(diào)查是否繼續(xù)
polling_active=True
while polling_active:
#提示輸入被調(diào)查者的名字和回答
name=input("
What is your name?")
response=input("which mountain would you like to climb someday?")
#將答案存儲在字典中
responses[name]=response
#看看是否還有人要參與調(diào)查
repeat=input("Would you like to let another person respond?(yes/no)")
if repeat=='no':
polling_active=False
#調(diào)查結(jié)束,顯示結(jié)果
print("
---Poll Results---")
for name,response in responses.items():
print(name+" would like to climb "+response+".")
What is your name?hi
which mountain would you like to climb someday?ko
Would you like to let another person respond?(yes/no)yes
What is your name?ji
which mountain would you like to climb someday?kp
Would you like to let another person respond?(yes/no)no
---Poll Results---
hi would like to climb ko.
ji would like to climb kp.
這個程序首先定義了一個空字典,并設(shè)置了一個標志,用于指出調(diào)查是否繼續(xù)。只要polling_active為True,Python就運行while循環(huán)中的代碼。
在這個循環(huán)中,提示用戶輸入其用戶名及其爬那座山。將這些信息存儲在字典response中,然后詢問用戶調(diào)查是否繼續(xù)。如果用戶輸入yes,程序?qū)⒃俅芜M入while循環(huán);如果用戶輸入no,標志polling_active將被設(shè)置為False,而while循環(huán)就此結(jié)束。
補充:python學(xué)習(xí)筆記——循環(huán)退出的幾種方式
在這里主要討論的是while循環(huán),for循環(huán)通過迭代對象退出。
由于while循環(huán)通常不知道循環(huán)的次數(shù),所以對于while循環(huán),它的幾種應(yīng)用場景導(dǎo)致退出條件設(shè)置的不同。
一、讓用戶選擇何時退出:定義退出變量
可使用while循環(huán)讓程序在用戶在愿意的時不斷運行,在其中定義一個退出值,只要用戶輸入的不是這個,程序就接著運行。
我們小時候玩游戲的經(jīng)常會遇到,當人物死亡的時候,界面會跳出 重新開始游戲or結(jié)束游戲,結(jié)束游戲就相當于我們設(shè)置的退出值。
形式如下:
active = True
while active:
message = input()
if message =="quit":
active = False
else:
print(message)
1、active是我們開始就定義的一個while觸發(fā)器
2、message定義用戶輸入字符
3、quit是退出條件,若用戶輸入quit,則active轉(zhuǎn)換屬性,下次循環(huán)退出。
二、用break退出:當明確遇到某些條件即退出時使用
當程序執(zhí)行到break,不管后面直接退出循環(huán)(而不是if-else模塊)。
break主要用于控制if-else語句,可使用ta來控制哪些代碼將執(zhí)行,哪些代碼不執(zhí)行。
prompt = "請輸入你曾去過的城市名字(當你不想玩的時候輸入'quit'退出程序)"
while True:
if city == 'quit':
break
else:
print("i'd love to go to"+'city.title()')
三、在循環(huán)中使用continue:當循環(huán)中需要跳過一些值時使用
當程序執(zhí)行到continue,直接跳出本次循環(huán),進入下一次循環(huán)。
例:從1到10,如果是奇數(shù)則輸出,偶數(shù)則跳過
chuzhi = 0
while chuzhi !=10:
chuzhi += 1
if chuzhi%2 ==0:
continue
else:
print(chuzhi)
在遇到continue的時候后面的else不看直接進入下一次while。
小結(jié)
以上就是python怎么使用while循環(huán)來控制程序流程的全部內(nèi)容,希望能給大家一個參考,也希望大家多多支持W3Cschool。