
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。