零基础学Python(第2版)
上QQ阅读APP看书,第一时间看更新

3.3.3 break和continue语句

break语句可以使程序跳出循环语句,从而执行循环体之外的程序,即break语句可以提前结束循环。例如,3.2.4节模拟switch分支结构使用了break语句。


01     operator = "+"
02     x = 1
03     y = 2
04     for case in switch(operator):             # switch只能用于for... in...循环中
05         if case('+'):
06             print (x + y)
07             break
08         if case('-'):
09             print (x - y)
10             break
11         if case('*'):
12             print (x * y)
13             break
14         if case('/'):
15             print (x / y)
16             break
17         if case():                                # 默认分支
18             print ("")

【代码说明】第7行代码中使用了break。当变量operator的值为“+”,则执行表达式x+y,然后中断switch分支结构,后面的case分支都不会执行。此时输出结果为3。后面的break作用相同。当匹配到某个case后,程序将跳出switch。

如果第一个case不使用break子句,程序将输出两个值,分别是3和-1。因为执行完输出表达式x+y后,分支结构并没有中断,程序将流转到下面一个case。然后继续计算表达式x–y的值,遇到后面的break语句才退出分支结构。break语句在循环结构中也有类似的作用。【例3-8】中的这段代码将从0到99中查找用户输入的值。

【例3-8.py】


01     x = int(input("输入x的值:"))
02     y = 0
03     for y in range(0, 100):
04         if x == y:
05             print ("找到数字:", x)
06             break
07     else:
08         print("没有找到")

【代码说明】

·第1行代码捕获用户输入的值,并把该值转换为int类型,赋值给变量x。

·第2行代码定义一个变量y,变量y用于暂存需要遍历的列表的值。

·第3行代码使用for…in…循环遍历range(0,100)返回的列表。range(0,100)的返回值为0、1、2、…、99。

·第4行代码判断输入的值是否等于列表中的值。如果条件成立,输出查找到的数字,并立即退出循环。循环结束,后面的else子句将不会被执行。

·第7行代码,当没有找到输入的值时,else子句后面的代码将被执行。

注意 break语句不能运行在循环体或分支语句之外,否则,Python解释器将提示如下错误。


SyntaxError: 'break' outside loop

continue语句也是用来跳出循环的语句,但是与break不同的是,使用continue语句不会跳出整个循环体,只是跳出当前的循环,然后继续执行后面的循环。


01     x = 0
02     for i in [1,2,3,4,5]:
03         if x == i:
04         continue
05     x  += i
06     print("x的值为", x)

【代码说明】

·第1行代码将x赋值为0。

·第2行代码使用for...in...语句遍历列表[1,2,3,4,5]。

·第3行代码将x与i进行比较,如果x与值i相等,则执行第4行的continue语句,停止当前循环,即不再执行第5行代码,继续执行下一个循环。

·第6行代码打印出最终的结果,输出为12。