while :
break #或者continue 跳出的是这个while和else
else:
break #或者continue 跳出的是更上一层次的循环
for in
这里的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 : #for_1 等级1
for : #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之后输出一次。
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后,就不会执行这一句
跳出多重循环
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