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在嵌套循环中,只对本层循环或本层循环的本次循环起作用。