溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python進(jìn)階之路 3.5.3 跳出循環(huán)

發(fā)布時間:2020-08-02 08:02:43 來源:網(wǎng)絡(luò) 閱讀:256 作者:Python進(jìn)階 欄目:編程語言

3.5.3 跳出循環(huán)

在前面的介紹中,介紹了while循環(huán),是通過while后面的條件表達(dá)式的值確定是否結(jié)束循環(huán),不過在很多時候,需要在循環(huán)體內(nèi)部之間跳出循環(huán),這就需要使用到break語句。這個語句就是跳出循環(huán),不在執(zhí)行循環(huán)體。

x = 0
while x < 100:
    if x == 5:
        break;
    print(x)
    x += 1
輸出結(jié)果:
0
1
2
3
4

在上面的代碼中,while循環(huán)的條件語句是x < 100,而x變量的初始值是0,因此,如果在while循環(huán)中,每次循環(huán)都對x變量值加1,那么while循環(huán)會循環(huán)100次。不過在while循環(huán)中通過if語句進(jìn)行了判斷,當(dāng)x的值等于5時,執(zhí)行break語句,就跳出循環(huán),不在執(zhí)行循環(huán)條件。所以這個while循環(huán)只會執(zhí)行6次(x從0到5),當(dāng)執(zhí)行到最后一次的時候,執(zhí)行了break語句退出while循環(huán)。而后面的語句都不會在去執(zhí)行了。所以這段程序只會輸出0到4,共5個數(shù)字。

與break語句對應(yīng)的還有另外一個continue語句。與break語句不同的是,continue語句用來終止本次循環(huán),而break語句用來徹底退出循環(huán)。continue語句終止本次循環(huán)后,會立刻開始執(zhí)行下一次循環(huán)。

x = 0
while x < 3:
    if x == 1:
        continue;
    print(x)
    x += 1      #這里為死循環(huán)
輸出結(jié)果:(死循環(huán))
0

在上面的代碼中,當(dāng)x等于1時,執(zhí)行了continue語句,因此,if語句后面的所有語句都不會執(zhí)行,while循環(huán)會繼續(xù)執(zhí)行下一次循環(huán)。不過這里有個問題,當(dāng)執(zhí)行這段代碼時,會發(fā)現(xiàn)進(jìn)入死循環(huán)了。所謂的死循環(huán),是指while循環(huán)的條件表達(dá)式的值永遠(yuǎn)為True,也就是循環(huán)永遠(yuǎn)不會結(jié)束。死循環(huán)是在使用循環(huán)時經(jīng)常容易犯的一個錯誤。

現(xiàn)在來分析一下這段代碼。如果要讓while循環(huán)正常結(jié)束,x必須大于或等于3,當(dāng)x等于1時,執(zhí)行了continue語句,所以if語句后面的所有語句在本次循環(huán)中都不會被執(zhí)行了,但while循環(huán)最后一條語句是x += 1,這條語句用于在每次循環(huán)中將x變量的值加1.但這次沒有加1,所以下一次循環(huán),x變量的值仍然是1,也就是說,if語句的條件永遠(yuǎn)滿足,因此continue語句將永遠(yuǎn)執(zhí)行下去,所以x變量的值永遠(yuǎn)不可能大于或等于3了。最終導(dǎo)致的后果就是while循環(huán)中的語句會永遠(yuǎn)執(zhí)行下去,也就是前面提到的死循環(huán)。

解決的方法也很簡單,只要保證執(zhí)行continue語句之前讓變量x加1即可?;蛘邔 += 1放到if語句的前面,或方到if語句中。

x = 0
while x < 3:
    if x == 1:
        x += 1      #需要在此處為x加1,否則將進(jìn)入死循環(huán)
        continue
    print(x)
    x += 1

break和continue語句同樣支持for循環(huán),而且支持嵌套循環(huán)。不過要注意,如果在嵌套循環(huán)中使用break語句,那么只能退出當(dāng)前層的循環(huán),不能退出最外層的循環(huán)。在下面的實例3.8中會演示循環(huán)更復(fù)雜的使用方法。

[例 3.8] 本例除了演示while和for循環(huán)的基本用法以外,還在滿足一定條件的前提下,通過break語句終止了整個while和for循環(huán),以及使用continue語句終止了while和for語句的本次循環(huán),最后再while循環(huán)中嵌套了一個for循環(huán),從而形成一個嵌套循環(huán),在這個嵌套循環(huán)中,輸出了二維列表中的所有元素值。在Python語句中,嵌套循環(huán)可以嵌套任意多層的循環(huán)。

x = 0
while x < 100:                                  #開始while循環(huán)
    if x == 5:                                  #當(dāng)x == 5時終止循環(huán)
        break;
    print(x,end=" ")
    x += 1

names = ["小黑","中白","大紅"]                    #定義一個列表變量
print("\nbreak語句在for循環(huán)中的應(yīng)用")
for name in names:                              #對names列表進(jìn)行迭代
    if not name.startswith("小"):               #遇到列表元素不是以"小"開頭的,就終止for循環(huán)
        break;
    print(name)

print("break語句在for循環(huán)中的應(yīng)用")
for name in names:                              #對names列表進(jìn)行迭代
    #遇到列表元素以"小"開頭的,會跳過本次循環(huán),繼續(xù)執(zhí)行下一次循環(huán)
    if name.startswith("小"):
        continue;
    print(name,end=" ")

print("\n嵌套循環(huán)")
arr1 = [1,2,3,4,5]
arr2 = ["小黑","中白","大紅"]
arr = [arr1,arr2]                               #定義一個二維列表變量
i = 0
while i < len(arr):                             #使用嵌套循環(huán)枚舉二維列表中的每一個元素值
    for value in arr[i]:
        print(value,end=" ")                    #輸出二維列表里的每一個元素值
    i += 1
    print()
輸出結(jié)果:
0 1 2 3 4 
break語句在for循環(huán)中的應(yīng)用
小黑
break語句在for循環(huán)中的應(yīng)用
中白 大紅 
嵌套循環(huán)
1 2 3 4 5 
小黑 中白 大紅 
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI