break、continue及跳出多重循环

while <test>: 
	<statementst1>
	break 	#或者continue 跳出的是这个while和else
else:
	<statementst2>
	break	#或者continue 跳出的是更上一层次的循环

for <target> in  <object>:
	<statements>
else:
	<statements>

这里的else和while的等级是并列,同样for和else也是并列的,所以else中的语句并不属于这里的while或者for的这一层次的循环,而是属于更上一层次的循环。
这里的else和while的等级是并列,同样for和else也是并列的,所以else中的语句并不属于这里的while或者for的这一层次的循环,而是属于更上一层次的循环。
这里的else和while的等级是并列,同样for和else也是并列的,所以else中的语句并不属于这里的while或者for的这一层次的循环,而是属于更上一层次的循环。

这里的break和continue在while(for)和else跳出的不是同一个循环。

for <test>: #for_1 等级1
    
    for <test>: #for_2 等级2 属于for_1
        
        break   #属于for_2, 跳出等级2 ,即跳出 for_2和else_2
        
    else:       #else_2与for_2并列 等级2 属于for_1
        
        break   #属于for_1,所以跳出for_1
       
else:
        break #错误,这里else_1和for_1并列,在else_1外边没有更高等级的循环,所以错误

在用break和continue要正确的知道它属于哪个循环,而不是在else中与while或for并列。
在用break和continue要正确的知道它属于哪个循环,而不是在else中与while或for并列。
在用break和continue要正确的知道它属于哪个循环,而不是在else中与while或for并列。

break

break跳出语句所属的最近的循环(while或者for)

for a in range(4):  #循环1
    print('第1层',a)
    for i in range(8):  #循环2
        print('第2层',i)
        if i ==2:   #属于循环2的语句
            break   #属于循环2,所以跳出的循环2,在执行这里之后,只要属于循环2中语句都不再执行
            print('执行1') #属于if语句,if也属于循环2的语句,永远都不会执行
        print('执行2')    #属于循环2的语句,当执行break后,这里也不会执行

在这里插入图片描述
这个程序中break,属于第2个for循环的语句,所以跳出的是循环2,并且在在执行break语句后,只要和break同属于的循环(这里即循环2)内break之后的语句都不会执行,看程序的输出,每一次输出 “第2层 2”后,后边两条print语句都没有再执行。

例2:

for a in range(4):  #循环1
    print('第1层',a)
    for i in range(2):  #循环2
        print('第2层',i)
    else:   #这个else和循环2的for是同一层次的,都属于循环1的for
        break   #属于else,但else属于循环1,所以跳出的是循环1
        print('执行1')    #属于else,但else属于循环1,所以也就是属于循环1,永远都不会执行

这里的else和循环2的for是一个组合,它们是同一层次的。 break属于else,else和循环2的for属于同一层次,所以else和循环2中的for都属于循环1for,所以这里的break跳出的是循环1for。

输出:
在这里插入图片描述

continue

跳出所属循环,进行下一次循环的执行。

for i in range(8):
    print(i)
    if i ==5:
        continue    #属于for循环
    print(i)        #也属于for循环,并且再continue之后,所以当执行continue后,就不会执行这一句

当i等于5,后边的print语句就不再执行了,从循环的开头开始执行,即i等于6开始执行。即5之后输出一次。

输出:
在这里插入图片描述例2:

for a in range(3):  #循环1
    for i in range(5):  #循环2
        print(i)
        if i ==3:
            continue    #属于for循环2
        print(i)        #也属于for循环2,并且再continue之后,所以当执行continue后,就不会执行这一句

所有的3都只输出一次
在这里插入图片描述

跳出多重循环

for i in range(5):  #循环1 for_1
    for j in range(5):  #循环2 for_2
        for k in range(5):  #循环3 for_3
            if i == j == k == 3:
                break   #属于循环3 for_3中的语句,所以跳出循环3
            else:    
                print (i, '----', j, '----', k)
        else:        #此else_3和for_3是一组合,并且和for_3是并列,都属于for_2的语句
            continue    #属于else_3,但是else_3属于for_2,所以会重for_2的下一次循环开始执行
        break        # break_2是属于for_2的,所以是跳出循环2
    else:            # else_2和for_2并列,但是属于for_1
        continue        #属于else_2,但是else_2属于for_1,所以会重for_1的下一次循环开始执行
    break            # break_1属于for_1,所以跳出循环1

在这里插入图片描述

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值