談?wù)凱ython中的while循環(huán)語句
前言
python中有兩種循環(huán),while和for,兩種循環(huán)的區(qū)別是,while循環(huán)之前,先判斷一次,如果滿足條件的話,再循環(huán),for循環(huán)的時候必須有一個可迭代的對象,才能循環(huán),比如說得有一個數(shù)組。
循環(huán)里面還有兩個比較重要的關(guān)鍵字,continue和break,continue的意思是,跳出本次循環(huán),繼續(xù)重頭開始循環(huán),break的意思是停止整個循環(huán),也就是說在continue和break下面的代碼都是不執(zhí)行的。
for 循環(huán)用于集合,其中的每一個元素都會執(zhí)行同一段代碼塊; 而 while 循環(huán)會不斷地運行同一段代碼塊, 直到不滿足指定的條件為止。
1 示例
我們使用 while 循環(huán)語句,設(shè)計一個小游戲。讓玩家輸入一個數(shù)字,程序?qū)⒏嬖V他,這個數(shù)是奇數(shù),還是偶數(shù):
# 輸入提示 prompt = '輸入一個數(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ù)字哦')
運行結(jié)果:
我們在這段程序中,定義了一個退出指令, 只要玩家輸入的不是這個指令, 程序就會一直運行。
2 活動狀態(tài)標(biāo)識
真實的游戲場景,可能有很多情況都會導(dǎo)致游戲結(jié)束。這時我們可以定義一個活動狀態(tài)標(biāo)識,用于判斷整個程序是否處于活動狀態(tài)。
我們來改寫之前的示例:
prompt = '輸入一個數(shù)字,我將告訴你,它是奇數(shù),還是偶數(shù)哦O(∩_∩)O~' prompt += '\n輸入“不玩了”,將退出本程序: ' exit = '不玩了' # 退出指令 content = '' # 輸入內(nèi)容 active = True # 活動狀態(tài)標(biāo)識 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ù)字哦')
改寫后,程序邏輯變得更清晰咯O(∩_∩)O~
在復(fù)雜的程序中, 可能存在很多事件都會導(dǎo)致程序停止。這時,設(shè)計一個活動狀態(tài)標(biāo)識就很有用: 其中的任何一個事件發(fā)生時,把活動狀態(tài)標(biāo)識設(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)的開頭, 然后根據(jù) while 條件測試結(jié)果來決定是否繼續(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ù)字哦')
這個改寫后的示例,將只會打印偶數(shù);如果碰到奇數(shù),則直接跳到下一個循環(huán)。
5 無限循環(huán)
每個 while 循環(huán)都必須有一條停止運行的條件,否則就會無限循環(huán)執(zhí)行下去。如果程序不小心陷入無限循環(huán), 那么就必須按 Ctrl + C , 或關(guān)閉顯示程序輸出的終端窗口,來強行停止程序。
6 處理列表
可以使用 while 循環(huán),在遍歷列表的同時對其進行修改。而這在 for 循環(huán)中,就不可以一邊遍歷一邊修改。
6.1 遷移列表元素
to_go_countries = ['英國', '法國', '美國'] # 想去的國家 visited_countries = [] # 已去的國家 while to_go_countries: country = to_go_countries.pop() print('準(zhǔn)備去【' + country+'】') print('【1】做攻略') print('【2】出發(fā)') print('【3】回來咯') visited_countries.append(country) print('to_go_countries:'+str(to_go_countries)) print('這些國家去過啦:' + str(visited_countries))
運行結(jié)果:
代碼中,使用 pop() 方法彈出棧頂元素(即列表末尾的最后一個元素),并返回這個元素。
可以看到,【 想去的國家列表】在退出 while 循環(huán)之后,已經(jīng)被彈空啦O(∩_∩)O~
6.2 刪除列表元素
假設(shè),目前有這些菜可點,但今天突然不想吃 “炸豆腐”,我們就可以這些寫:
foods = ['拌海蜇', '熗冬筍', '炸豆腐', '炸面筋', '麻辣野雞', '炒肉片'] while '炸豆腐' in foods: foods.remove('炸豆腐') print('foods=' + str(foods))
運行結(jié)果:
foods=['拌海蜇', '熗冬筍', '炸面筋', '麻辣野雞', '炒肉片']
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。
相關(guān)文章
python 拷貝特定后綴名文件,并保留原始目錄結(jié)構(gòu)的實例
下面小編就為大家分享一篇python 拷貝特定后綴名文件,并保留原始目錄結(jié)構(gòu)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04Python RuntimeWarning:invalid value encounter
這篇文章主要介紹了Python RuntimeWarning:invalid value encountered in double_scalars處理,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06python reverse反轉(zhuǎn)部分?jǐn)?shù)組的實例
今天小編就為大家分享一篇python reverse反轉(zhuǎn)部分?jǐn)?shù)組的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12Python os.path.exists()函數(shù)總是返回false的解決方案
這篇文章主要介紹了Python os.path.exists()函數(shù)總是返回false的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03Python+Pandas 獲取數(shù)據(jù)庫并加入DataFrame的實例
今天小編就為大家分享一篇Python+Pandas 獲取數(shù)據(jù)庫并加入DataFrame的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07