Python语言没有提供goto 语句来控制程序的跳转,这种做法虽然提高了程序流程控制的可读性,但降低了灵活性。为了弥补这种不足,Python提供了continue和 break 来控制循环结构。除此之外,使用return可以结束整个方法,当然也就结束了一次循环。
使用break结束循环
某些时候,需要在某种条件出现时强行中止循环,而不是等到循环条件为False时才退出循环。
此时,可以使用break 来完成这个功能。break 用于完全结束一个循环,跳出循环体。不管是哪种循环,一旦在循环体中遇到 break,系统就将完全结束该循环,开始执行循环之后的代码。例如如下程序。
# !/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2024/01
# @Author : Laopi
#一个简单的for循环
for i in range(0,100):
print("i的值是:",i)
if i==2:
#执行该语句时将结束循环
break
运行上面程序,将看到i循环到2时即结束,因为当i等于2时,在循环体内遇到了break语句,程序跳出该循环。
对于带else块的for循环,如果使用break 强行中止循环,程序将不会执行else块。例如如下程序。
# !/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2024/01
# @Author : Laopi
#一个简单的for循环
for i in range(0,100):
print("i的值是:",i)
if i==2:
#执行该语句时将结束循环
break
else:
print('执行了else',i)
上面程序同样会在i等于2时跳出循环,而且此时for 循环不会执行else块。
在使用break语句的情况下,循环的else 代码块与直接放在循环体后是有区别的:如果将代码块放在else 块中,当程序使用 break 中止循环时,循环不会执行else 块:如果将代码块直接放在循环体后面,当程序使用break 中止循环时,程序自然会执行循环体之后的代码块。Python的break语句不能像其他语言一样使用标签,因此它只可以结束其所在的循环,不可以结束嵌套循环的外层循环。
为了使用 break语句跳出嵌套循环的外层循环,可先定义bool类型的变量来标志是否需要跳出外层循环,然后在内层循环、外层循环中分别使用两条break语句来实现。
out_flag = False
#这是外层循环
for i in range(0,5):
#内存循环
for j in range(0,3):
print("i的值为:%d,j的值为:%d"%(i,j))
if j==1:
out_flag = True
# 跳出内存循环
break
# 如果out_flag为True,跳出外层循环
if out_flag:
break
上面程序在内层循环中判断j是否等于1,当j等于1时,程序将out_flag设为True,并跳出内层循环:接下来程序开始执行外层循环的剩下语句,由于 out_flag 为 True,因此也会执行外层循环的break语句来跳出外层循环。
运行上面程序,将看到如下运行结果
程序从外层循环进入内层循环后,当j等于1时程序将out_flag设为True,并跳出内层循环:接下来程序又执行外层循环的 break 语句,从而跳出外层循环。