4.5 break和continue语句
如果在循环的过程中,提前结束这个循环,开始后面的语句,或者提前结束某一次循环,开始下一次循环,怎么办?
break可以提前结束一层循环,continue可以提前结束一次循环。
4.5.1 break语句
break放在循环中,结束本层循环,开始循环之后的语句。
例如:4.11-break.py
# break语句:跳出本层循环
# 只能结束一层,本层
for x in 'abcde':
print('本次循环取出的字符:')
print(x)
if x == 'c':
break
print('=' * 18)
执行的结果为:
本次循环取出的字符:
a
==================
本次循环取出的字符:
b
==================
本次循环取出的字符:
c
break语句一般结合if语句,在循环中到达一定条件时,结束这个循环。
4.5.2 无限循环结合break
循环条件如果一直满足的话,将是无限循环执行,例如:
循环控制变量没有增加:
i = 0
while i < 5:
print('第{}次循环'.format(i))
# 循环控制变量增加被注释掉,循环无限执行
# i += 1
或者:
i = 0
# 循环条件判断永远为真
while True:
print('第{}次循环'.format(i))
i += 1
无限循环出现的话,程序将始终在此处执行,无法继续,一般来说都是严重的问题。
但有时可以利用这一点,实现一些没有固定循环次数的操作,然后在循环体中加上break语句,用来跳出循环。
例如:4.12-break改进登录.py
# 使用无限循环和break实现登录操作
username = 'zhangsan'
password = '123456'
while True:
un = input('请输入用户名:')
pw = input('请输入密码:')
if username == un and password == pw:
print('登录成功。')
break
else:
print('登录失败,用户名或密码错误。请重新输入。')
print('欢迎{}使用XX系统。'.format(username))
在这个无限循环中,当用户名和密码都等于预设值时,break被执行,结束这个while循环;否则一直提示输入错误,再次重新输入。
4.5.3 continue语句
通过例子看一下continue语句的作用:
# continue作用:结束本次循环
for x in 'abcde':
print('本次循环取出的字符:')
print(x)
if x == 'c':
continue
print('=' * 18)
输出结果为:
本次循环取出的字符:
a
==================
本次循环取出的字符:
b
==================
本次循环取出的字符:
c
本次循环取出的字符:
d
==================
本次循环取出的字符:
e
==================
当取出的字符等于'c'满足时,执行continue语句,这时,这次循环体中后面的打印一行等号的语句将被跳过,直接开始下一次循环。
continue语句一般结合if语句,在循环中到达一定条件时,结束这一次循环。
4.5.4 总结
break/continue自身都是无条件执行,通常和if语句结合使用。
break/continue只能用在循环中,除此以外不能单独使用。
break/continue在嵌套循环中,只对本层循环或本层循环的本次循环起作用。