您好,登錄后才能下訂單哦!
前言
python中有兩種循環(huán),while和for,兩種循環(huán)的區(qū)別是,while循環(huán)之前,先判斷一次,如果滿足條件的話,再循環(huán),for循環(huán)的時(shí)候必須有一個(gè)可迭代的對(duì)象,才能循環(huán),比如說(shuō)得有一個(gè)數(shù)組。
循環(huán)里面還有兩個(gè)比較重要的關(guān)鍵字,continue和break,continue的意思是,跳出本次循環(huán),繼續(xù)重頭開(kāi)始循環(huán),break的意思是停止整個(gè)循環(huán),也就是說(shuō)在continue和break下面的代碼都是不執(zhí)行的。
for 循環(huán)用于集合,其中的每一個(gè)元素都會(huì)執(zhí)行同一段代碼塊; 而 while 循環(huán)會(huì)不斷地運(yùn)行同一段代碼塊, 直到不滿足指定的條件為止。
1 示例
我們使用 while 循環(huán)語(yǔ)句,設(shè)計(jì)一個(gè)小游戲。讓玩家輸入一個(gè)數(shù)字,程序?qū)⒏嬖V他,這個(gè)數(shù)是奇數(shù),還是偶數(shù):
# 輸入提示 prompt = '輸入一個(gè)數(shù)字,我將告訴你,它是奇數(shù),還是偶數(shù)哦O(∩_∩)O~' prompt += '\n輸入“不玩了”,將退出本程序: ' exit = '不玩了' # 退出指令 content = '' #輸入內(nèi)容 while content != exit: content = input(prompt) if content.isdigit(): number = int(content) if (number % 2 == 0): print('該數(shù)是偶數(shù)') else: print('該數(shù)是奇數(shù)') elif content != exit: print('輸入的必須是數(shù)字哦')
運(yùn)行結(jié)果:
我們?cè)谶@段程序中,定義了一個(gè)退出指令, 只要玩家輸入的不是這個(gè)指令, 程序就會(huì)一直運(yùn)行。
2 活動(dòng)狀態(tài)標(biāo)識(shí)
真實(shí)的游戲場(chǎng)景,可能有很多情況都會(huì)導(dǎo)致游戲結(jié)束。這時(shí)我們可以定義一個(gè)活動(dòng)狀態(tài)標(biāo)識(shí),用于判斷整個(gè)程序是否處于活動(dòng)狀態(tài)。
我們來(lái)改寫(xiě)之前的示例:
prompt = '輸入一個(gè)數(shù)字,我將告訴你,它是奇數(shù),還是偶數(shù)哦O(∩_∩)O~' prompt += '\n輸入“不玩了”,將退出本程序: ' exit = '不玩了' # 退出指令 content = '' # 輸入內(nèi)容 active = True # 活動(dòng)狀態(tài)標(biāo)識(shí) while active: content = input(prompt) if content.isdigit(): number = int(content) if (number % 2 == 0): print('該數(shù)是偶數(shù)') else: print('該數(shù)是奇數(shù)') elif content == exit: active = False else: print('輸入的必須是數(shù)字哦')
改寫(xiě)后,程序邏輯變得更清晰咯O(∩_∩)O~
在復(fù)雜的程序中, 可能存在很多事件都會(huì)導(dǎo)致程序停止。這時(shí),設(shè)計(jì)一個(gè)活動(dòng)狀態(tài)標(biāo)識(shí)就很有用: 其中的任何一個(gè)事件發(fā)生時(shí),把活動(dòng)狀態(tài)標(biāo)識(shí)設(shè)置為 False, 主程序循環(huán)結(jié)束。
3 break 關(guān)鍵字
使用 break 關(guān)鍵字,可以立即退出while 循環(huán)。
... while active: content = input(prompt) if content.isdigit(): ... elif content == exit: break else: ...
4 continue 關(guān)鍵字
使用 continue 關(guān)鍵字,可以直接返回到循環(huán)的開(kāi)頭, 然后根據(jù) while 條件測(cè)試結(jié)果來(lái)決定是否繼續(xù)執(zhí)行下一次循環(huán)。
while active: content = input(prompt) if content.isdigit(): number = int(content) if (number % 2 == 0): print('該數(shù)是偶數(shù)') else: continue elif content == exit: break else: print('輸入的必須是數(shù)字哦')
這個(gè)改寫(xiě)后的示例,將只會(huì)打印偶數(shù);如果碰到奇數(shù),則直接跳到下一個(gè)循環(huán)。
5 無(wú)限循環(huán)
每個(gè) while 循環(huán)都必須有一條停止運(yùn)行的條件,否則就會(huì)無(wú)限循環(huán)執(zhí)行下去。如果程序不小心陷入無(wú)限循環(huán), 那么就必須按 Ctrl + C , 或關(guān)閉顯示程序輸出的終端窗口,來(lái)強(qiáng)行停止程序。
6 處理列表
可以使用 while 循環(huán),在遍歷列表的同時(shí)對(duì)其進(jìn)行修改。而這在 for 循環(huán)中,就不可以一邊遍歷一邊修改。
6.1 遷移列表元素
to_go_countries = ['英國(guó)', '法國(guó)', '美國(guó)'] # 想去的國(guó)家 visited_countries = [] # 已去的國(guó)家 while to_go_countries: country = to_go_countries.pop() print('準(zhǔn)備去【' + country+'】') print('【1】做攻略') print('【2】出發(fā)') print('【3】回來(lái)咯') visited_countries.append(country) print('to_go_countries:'+str(to_go_countries)) print('這些國(guó)家去過(guò)啦:' + str(visited_countries))
運(yùn)行結(jié)果:
代碼中,使用 pop() 方法彈出棧頂元素(即列表末尾的最后一個(gè)元素),并返回這個(gè)元素。
可以看到,【 想去的國(guó)家列表】在退出 while 循環(huán)之后,已經(jīng)被彈空啦O(∩_∩)O~
6.2 刪除列表元素
假設(shè),目前有這些菜可點(diǎn),但今天突然不想吃 “炸豆腐”,我們就可以這些寫(xiě):
foods = ['拌海蜇', '熗冬筍', '炸豆腐', '炸面筋', '麻辣野雞', '炒肉片'] while '炸豆腐' in foods: foods.remove('炸豆腐') print('foods=' + str(foods))
運(yùn)行結(jié)果:
foods=['拌海蜇', '熗冬筍', '炸面筋', '麻辣野雞', '炒肉片']
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。