說說 Python 的 while 循環語句

for 循環用於集合,其中的每個元素都會執行同一段代碼塊; 而 while 循環會不斷地運行同一段代碼塊, 直到不知足指定的條件爲止。git

1 示例

咱們使用 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

咱們在這段程序中,定義了一個退出指令, 只要玩家輸入的不是這個指令, 程序就會一直運行。測試

2 活動狀態標識

真實的遊戲場景,可能有不少狀況都會致使遊戲結束。這時咱們能夠定義一個活動狀態標識,用於判斷整個程序是否處於活動狀態。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

3 break 關鍵字

使用 break 關鍵字,能夠當即退出while 循環。cdn

...
while active:
    content = input(prompt)
    if content.isdigit():
        ...
    elif content == exit:
        break
    else:
       ...
複製代碼

4 continue 關鍵字

使用 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('輸入的必須是數字哦')
複製代碼

這個改寫後的示例,將只會打印偶數;若是碰到奇數,則直接跳到下一個循環。

5 無限循環

每一個 while 循環都必須有一條中止運行的條件,不然就會無限循環執行下去。若是程序不當心陷入無限循環, 那麼就必須按 Ctrl + C , 或關閉顯示程序輸出的終端窗口,來強行中止程序。

6 處理列表

可使用 while 循環,在遍歷列表的同時對其進行修改。而這在 for 循環中,就不能夠一邊遍歷一邊修改。

6.1 遷移列表元素

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~

6.2 刪除列表元素

假設,目前有這些菜可點,但今天忽然不想吃 「炸豆腐」,咱們就能夠這些寫:

foods = ['拌海蜇', '熗冬筍', '炸豆腐', '炸麪筋', '麻辣野雞', '炒肉片']
while '炸豆腐' in foods:
    foods.remove('炸豆腐')
print('foods=' + str(foods))
複製代碼

運行結果:

foods=['拌海蜇', '熗冬筍', '炸麪筋', '麻辣野雞', '炒肉片']

相關文章
相關標籤/搜索