在执行循环时要进行条件判断,只有在条件为“假”时,才能结束循环。但是,有时根据实际情况需要停止整个循环或是跳到下一次循环,有时需要从程序的一部分跳到程序的其他部分,这些都可以由跳转语句来完成。
Python
支持三种形式的跳转:
break
、
continue
、
return
。
- 使用
break
完全中止循环。 - 使用
continue
语句直接跳到循环的下一次迭代。
1、 break
描述4000
米长跑比赛
i = 0
while i < 10:
跑400米
if 不能坚持:
break #退出比赛
break
语句可以终止当前的循环,包括while
和for
在内的所有控制语句。break
语句一般会结合if
语句进行搭配使用,表示在某种条件下,跳出循环。
while 条件表达式1:
执行代码
if 条件表达式2:
break
for 迭代变量 in 对象:
if 条件表达式:
break
示例
循环录入某学生5
门课的成绩并计算平均分,如果某分数录入为负,停止录入并提示录入错误。
练一练
(1)1~10之间的整数相加,得到累加值大于20的当前数。
(2)今有美酒若干坛,然不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问几何?使用for
循环和break
实现。
2、 for ……else
for
循环可以和else
搭配使用。但else
语句是不能脱离其他语句单独存在的。
for 临时变量 in 列表或者字符串等:
循环满足条件时执行的代码
else:
循环不满足条件时执行的代码
示例一
for i in range(3):
print(i)
else:
print('else content')
结果如下:
0
1
2
else content
得出结论:for
循环正常执行结束后,else
语句里面的内容也会正常执行。
示例二
for i in range(3):
break
else:
print('else content')
无任何输出。
得出结论:当 for
循环被 break
中断后,其后的 else
语句就不执行了。
读一读
在for
循环中,如果没有从任何一个break
中退出,则会执行和for
对应的else
只要从break
中退出了,则else
部分不执行。
改一改
for i in range(10):
if i == 5:
print('found it! i = {}'.format(i))
else:
print('not found it ...')
你期望的结果是,当找到5时打印出:
found it! i = 5
实际上打印出来的结果为:
found it! i = 5
not found it ...
显然这不是我们期望的结果。
当迭代的对象迭代完并为空时,位于else
的子句将执行,而如果在for
循环中含有break
时则直接终止循环,并不会执行else
子句。
所以正确的写法应该为:
读一读2
使用else改写之前的例子
练一练
(1)使用程序模拟10000米比赛。
3、continue
continue
的作用:用来结束本次循环,紧接着执行下一次的循环。所以continue
可以加速循环。
continue
语句的语法比较简单,只需要在相应的while
或for
语句中加入即可。
continue
语句一般会与if
语句搭配使用,表示在某种条件下,跳过当前循环的剩余语句,然后继续进行下一轮循环。
while 条件表达式1:
执行代码
if 条件表达式2:
continue
for 迭代变量 in 对象:
if 条件表达式:
continue
示例
循环录入Python
课的学生成绩,统计分数大于等于80
分的学生比例。
练一练
(1)求1~10之间的所有偶数和。
(2)求1~100之间不能被3整除的数之和。
(3)求1~100之间个位数字不是2、3、4、7,并且不能被3整除的整数之和。
(4) “逢七拍腿游戏”
游戏规则是每个员工从1
开始依次数数,当数到尾数是7的数或7的倍数时,则该员工不报出该数,而是拍一下腿。凡是出错的员工将会受到小惩罚——做10
个俯卧撑。假设在一次游戏中,参加活动的员工循环报数,从1数到99,每个人都没有出错,即无人受到惩罚。现在编写程序,在本次游戏中,计算员工一共要拍多少次腿。
4、pass语句
在Python
中还有一个pass
语句,表示空语句。它不做任何事情,—般起到占位作用。例如,在应用for循环输出1〜10
之间(不包括10
)的偶数时,在不是偶数时,应用pass
语句占个位置,方便以后对不是偶数的数进行处理。
for i in range(1,10):
if i%2 == 0: #判断是否为偶数
print(i,end = ' ')
else: #不是偶数
pass #占位符,不做任何事情