for 循環用於集合,其中的每個元素都會執行同一段代碼塊; 而 while 循環會不斷地運行同一段代碼塊, 直到不知足指定的條件爲止。git
咱們使用 while 循環語句,設計一個小遊戲。讓玩家輸入一個數字,程序將告訴他,這個數是奇數,仍是偶數:bash
# 輸入提示
prompt = '輸入一個數字,我將告訴你,它是奇數,仍是偶數哦O(∩_∩)O~'
prompt += '\n輸入「不玩了」,將退出本程序: '
exit = '不玩了' # 退出指令
content = '' #輸入內容
while content != exit:
content = input(prompt)
if content.isdigit():
number = int(content)
if (number % 2 == 0):
print('該數是偶數')
else:
print('該數是奇數')
elif content != exit:
print('輸入的必須是數字哦')
複製代碼
運行結果: app
咱們在這段程序中,定義了一個退出指令, 只要玩家輸入的不是這個指令, 程序就會一直運行。測試
真實的遊戲場景,可能有不少狀況都會致使遊戲結束。這時咱們能夠定義一個活動狀態標識,用於判斷整個程序是否處於活動狀態。ui
咱們來改寫以前的示例:spa
prompt = '輸入一個數字,我將告訴你,它是奇數,仍是偶數哦O(∩_∩)O~'
prompt += '\n輸入「不玩了」,將退出本程序: '
exit = '不玩了' # 退出指令
content = '' # 輸入內容
active = True # 活動狀態標識
while active:
content = input(prompt)
if content.isdigit():
number = int(content)
if (number % 2 == 0):
print('該數是偶數')
else:
print('該數是奇數')
elif content == exit:
active = False
else:
print('輸入的必須是數字哦')
複製代碼
改寫後,程序邏輯變得更清晰咯O(∩_∩)O~設計
在複雜的程序中, 可能存在不少事件都會致使程序中止。這時,設計一個活動狀態標識就頗有用: 其中的任何一個事件發生時,把活動狀態標識設置爲 False, 主程序循環結束。code
使用 break 關鍵字,能夠當即退出while 循環。cdn
...
while active:
content = input(prompt)
if content.isdigit():
...
elif content == exit:
break
else:
...
複製代碼
使用 continue 關鍵字,能夠直接返回到循環的開頭, 而後根據 while 條件測試結果來決定是否繼續執行下一次循環。blog
while active:
content = input(prompt)
if content.isdigit():
number = int(content)
if (number % 2 == 0):
print('該數是偶數')
else:
continue
elif content == exit:
break
else:
print('輸入的必須是數字哦')
複製代碼
這個改寫後的示例,將只會打印偶數;若是碰到奇數,則直接跳到下一個循環。
每一個 while 循環都必須有一條中止運行的條件,不然就會無限循環執行下去。若是程序不當心陷入無限循環, 那麼就必須按 Ctrl + C , 或關閉顯示程序輸出的終端窗口,來強行中止程序。
可使用 while 循環,在遍歷列表的同時對其進行修改。而這在 for 循環中,就不能夠一邊遍歷一邊修改。
to_go_countries = ['英國', '法國', '美國'] # 想去的國家
visited_countries = [] # 已去的國家
while to_go_countries:
country = to_go_countries.pop()
print('準備去【' + country+'】')
print('【1】作攻略')
print('【2】出發')
print('【3】回來咯')
visited_countries.append(country)
print('to_go_countries:'+str(to_go_countries))
print('這些國家去過啦:' + str(visited_countries))
複製代碼
運行結果:
代碼中,使用 pop() 方法彈出棧頂元素(即列表末尾的最後一個元素),並返回這個元素。
能夠看到,【 想去的國家列表】在退出 while 循環以後,已經被彈空啦O(∩_∩)O~
假設,目前有這些菜可點,但今天忽然不想吃 「炸豆腐」,咱們就能夠這些寫:
foods = ['拌海蜇', '熗冬筍', '炸豆腐', '炸麪筋', '麻辣野雞', '炒肉片']
while '炸豆腐' in foods:
foods.remove('炸豆腐')
print('foods=' + str(foods))
複製代碼
運行結果:
foods=['拌海蜇', '熗冬筍', '炸麪筋', '麻辣野雞', '炒肉片']