循环跳转
循环跳转
简介
在使用循环进行实现逻辑时,并不是每次都会将循环执行完毕,或者循环根本没有结束的条件。
此时,在循环过程中,期望达到某个条件时,结束循环继续向后执行,此时,就可以使用循环跳转来完成此功能。
Python中提供两种循环跳转语句:
break
: 结束当前循环
continue
: 结束本次循环
在讲解之前,先来了解一种特殊的循环方式。
死循环
死循环是指循环条件恒等为真,循环会一直执行下去,死循环并不是一种错误语法,反之,有效使用死循环可以解决很多问题。
但实际使用中,还是要尽量避免死循环的使用。
示例:
while True:
print("Hogwarts!")
一般,在不确定循环次数的情况下,可以使用死循环来实现。比如 Web 服务器监听处理客户端的请求连接,服务器并不知道会有多少客户端会连接,此时就可以使用死循环实现。
示例: 从键盘持续输入数据,每输入一次,将数据添加到列表中保存
data = []
while True:
d = input("请输入数据:")
data.append(d)
print(data)
从代码执行中可以发现,程序会一直等待用户输入并添加到列表中,不会结束执行。
此程序只为演示死循环的使用方式,并无实际意义。
break
语句
break
语句可以中止当前的 while
或 for-in
循环,无论循环还有多少次没有执行,都会无条件结束循环后,跳转到循环后的语句继续执行。
以生活中的跑步为例,计划跑 5 圈,可是在跑到第 2 圈的时候,接到了室友的电话叫去吃大餐,于是果断停下来,中止跑步,这就相当于使用 break
语句提前中止了循环。
break
语句的语法比较简单,只需要在相应的 while
或 for-in
语句中加入即可。
前面的示例使用用 break
可以优化为,当输入 bye
时,结束输入
data = []
while True:
d = input("请输入数据:")
if d == "bye":
break
data.append(d)
print(data)
需要注意的是,break
语句出现在多层循环中时,所处在哪个循环的循环体内,就跳出哪个循环,更外层的循环不受影响。
示例:
for i in range(2):
for j in range(5):
print("Hello", j)
if j == 2:
break
当内层循环执行 3 次后满足 j==2
的条件,结束内层循环的执行,进入下一次外层循环。
continue
语句
continue
语句的作用用来中止本次循环而提前进入下一次循环中,循环体中未执行完的代码不在执行。
仍然以操场跑步为例,计划跑 5 圈,但是在跑完每圈的前一百米就回到起点重新跑,后面的不在跑了。
示例:
for i in range(10):
print("*" * 10)
print("i=",i)
if i % 3 == 0:
continue
print("i*10= ", i*10)
大多数情况下,可以通过改变条件的方式,避免 continue
的使用。而代码更简洁。
for i in range(10):
print("*" * 10)
print("i=",i)
if i % 3 != 0:
print("i*10= ", i*10)
loop-else
在 Python 中,不只 if
语句可以使用 else
, 循环语句也可以使用 else
。
当一个循环没有被 break
中断而正常循环结束,就会执行 else
后的代码块。
示例:
for i in range(5):
print(i)
else:
print("Over")
如果循环被中断,则不会执行 else
后的语句
示例:
for i in range(5):
print(i)
if i == 2:
break
else:
print("Over")
在某些场景下,else
可以简化代码。
示例:
names = ["tom","jack","rose","tony"]
inName = input("请输入要查找的姓名:")
# 不使用 else 形式
flag = False
for name in names:
if name == inName:
print("找到了")
flag = True
break
if not flag:
print("没找到")
# 使用 else 形式
for name in names:
if name == inName:
print("找到了")
break
else:
print("没找到")