【2.4】循环中断:break和continue
无论是while循环还是for循环,都是重复性的执行特定操作。
在这个重复的过程中,会出现一些其它情况让我们不得不:
1.暂时跳过某次循环,直接进行下一次;
2.提前退出循环,不再继续。
对于这种场景,Python提供continue和break关键字,用以对循环进行临时跳过和直接结束。
一、continue
continue关键字的效果:中断本次循环,直接进入下一次循环。
continue可以用于for循环和while循环,效果是一样的。
for i in range(1, 100):
语句1
continue
语句2
上面代码,在循环体内,遇到continue就提前结束本轮循环,进行下一轮循环。所以,语句2是不会执行的。
二、break
break关键字的效果:整个循环全部结束。
break可以用于for循环和while循环,效果一致。
for i in range(1, 100):
语句1
break
语句2
语句3
上面代码,在循环体内,遇到break就结束循环了。所以,在执行了一次语句1后,遇到break,整个for循环直接全部结束(后面轮次的循环也不再管),直接执行语句3了。
三、在嵌套循环中的使用
无论是continue还是break,它只可以控制它所在层次的循环体是跳过本轮循环,或是结束整个循环,而对上层循环没有任何影响。
例如:
for i in range(1, 6):
print("语句1")
for j in range(1, 6):
print("语句2")
continue
print("语句3")
print("语句4")
再例如:
for i in range(1, 100):
语句1
for j in range(1, 100):
语句2
break
语句3
语句4
※、练习
案例:发工资
某公司,账户余额有1万元,给20名员工发工资。
1.员工编号从1到20,从编号1开始,依次领取工资,每人可领取1000元;
2.领工资时,财务判断员工的绩效分(1-10)(随机生成),如果低于5,不发工资,换下一位;
3.如果工资发完了,结束发工资。
...
员工12,绩效分3,低于5,不发工资,下一位。
员工13,绩效分1,低于5,不发工资,下一位。
员工14,绩效分4,低于5,不发工资,下一位。
向员工15发放工资1000元,账户余额还剩余2000元。
向员工16发放工资1000元,账户余额还剩余1000元。
员工17,绩效分2,低于5,不发工资,下一位。
向员工18发放工资1000元,账户余额还剩余0元。
工资发完了,下个月再领取吧。
我的代码
import random
# 账户余额
money = 10000
# 控制员工编号1-20
for id in range(1, 21):
# 随机生成当前员工绩效分
score = random.randint(1, 10)
if score < 5:
print(f"员工{id},绩效分{score},不发工资,下一位。")
continue
# 发放工资1000元
if money >= 1000:
money -= 1000
print(f"向员工{id}发放工资1000元,账户余额还剩余{money}元。")
if money == 0:
print("工资发完了,下个月再领取吧。")
break