3.5 循环控制
break和continue用于循环运行的时候进行控制。它们的功能是:
break:跳出当前循环,不再执行剩余的循环,即使条件仍然成立。break语句的出现宣告了判断是否死循环不能光看条件。
continue:停止执行本次循环剩余的代码,立即回去判断循环条件。
现在我们来看两个例子:
i=0while i < 100: i+=1 if(i==56): break print(i)
这段代码将打印1、2、3…53、54、55。因为到了56,就符合了中间的if语句,运行了break,剩余的所有循环都被打断不再执行了——就算条件仍然成立。
如果是这样:
i=0while i < 100: i+=1 if i==56: continue print(i)
这段代码将打印1、2、3…53、54、55、57、58...99、100。唯独少了56。到了56,就符合了中间的if语句,运行了continue,剩余的代码不再执行,立刻回到条件处。也可以理解为,直接开始新的一次循环。continue写得不慎,容易造成死循环,例如上面的代码,只要把i加1的位置换一下:
i=0while i < 100: if i==56: continue i+=1 print(i)
出现了什么?解释一下原因。
continue用得比较少,因为通常用if语句完成了这类功能。下面的这段代码的功能也是打印1、2、3…53、54、55、57、58...99、100:
i=0while i < 100: i+=1 #i不等于56的时候才打印 if i != 56: print(i)
此外还有一个pass,它表示空语句,什么也不做,直接略过,主要是为了占住位置,保持结构:
i=0while i < 100: if i%3==0: print(i) elif i%4==0: pass else: print(i) i+=1
循环后的else
循环的也可以使用else,当循环正常停止的时候(没有break,return或任何异常),或者一开始循环的条件就不成立的时候,else会执行,例如:
#第一个例子一开始循环条件就不成立了,直接打印i>=0i=10while i<0: print(i) i-=1else: print("i=",i)print("-------------我是分割线----------------")#第二个例子,循环打印10到0,循环结束后又打印了i>=0i=10while i>0: print(i) i-=1else: print("i=",i)print("-------------我是分割线----------------")#第三个例子,循环打印,但中间用break打断了,循环结束后就不再执行else部分了i=10while i>0: print(i) i-=1 if i==3: break;else: print("i=",i)