前两章中,我们跟着海绵宝宝的故事,掌握了 while
循环和 for
循环,这两种不同的循环模式。while
循环和 for
循环都需要有 循环体 和 缩进,我们来复习一下它俩的语法规则:
while
循环与 for
循环辨析
学到这里,对于 while
循环与 for
循环要怎么用,你已经相当熟悉啦,它们都能满足将某件事重复多次的需求。下面这两段代码都能将“美味蟹黄堡”打印 3 遍,只是 for
循环代码要更简洁:
# while 循环
i = 0
while i < 3:
print('美味蟹黄堡')
i += 1 # 还记得 i += 1 是 i = i + 1 的缩写吗?
# for 循环
for i in range(3):
print('美味蟹黄堡')
这么一看,while
循环和 for
循环的功能似乎没有差异呀?那 Python 中何必还要有两种不同的循环语句呢?
要回答这个问题,首先要理清楚两种循环的不同之处,二者最大的区别在于 循环次数是否确定,我们结合两种循环的终止条件来理解一下。
先来看 for
循环。for
循环的执行逻辑很好理解,遍历序列,遍历结束后循环终止。所以说,for
循环的循环次数是确定的,序列中有多少个元素,循环就执行多少次:
# 循环次数确定
names = ['海绵宝宝', '派大星', '泡芙老师', '珊迪', '蟹老板']
for i in names:
print(i)
而 while
循环是在条件不满足时终止循环,我们不需要给出一个确定的循环次数。所以,如果你也不确定要让 Python 把某件事重复多少遍,那用 while
循环就刚好合适:
# 循环次数不确定
name = ''
while name != '海绵宝宝':
name = input('猜猜我是谁?')
大多数情况下,两种循环是通用的,但像上面这个例子一样的猜名字、猜数字问题,只能通过 while
循环来实现。
总结一下,while
循环和 for
循环有着完全不同的循环模式。写 for
循环时,我们无需额外去思考循环的终止条件,只需要提供待遍历的数据;写 while
循环则不一样,无需关心循环的执行次数,只需要提供清晰有效的循环条件。
两种循环在大多数情况下通用,但各自的特点决定了它们更适合用来解决两类不同的循环问题:
编程练习
仿照课程中的例子,我们给海绵宝宝写一个工作提醒器吧。要求:
- 询问是否下班了,并使用变量
answer
获取用户输入; - 如果用户输入的不是 下班了,就重复打印 小海绵努力工作中……,并再次询问是否下班了。
- 如果输入的是 下班了,就结束循环,并打印 回家找小蜗啦。
想想看,哪种循环适合解决这个问题呢?🤔
answer = input('下班了吗?输入下班了/没下班')
working = '小海绵努力工作中……'
go_home = '回家找小蜗啦'
因为前面几章的练习,都是一些固定参数的循环,到这反而有点不习惯了,但是自己观察就会发现,其实逻辑上还是一样的,知识多了一个 input()
answer = input('下班了吗?输入下班了/没下班')
working = '小海绵努力工作中……'
go_home = '回家找小蜗啦'
while answer != '下班了':
print(working)
answer = input('下班了吗?输入下班了/没下班')
print(go_home)
两位循环魔法师各有所长,有了他们的加入,蟹黄堡产能大爆发,到店的客人络绎不绝,连食材供应都跟不上了。
大 Boss 蟹老板嘱咐海绵宝宝,一定要做好食材管理,如果仓库里的食材已经不够了,那无论是否还有客人等待,都停止做蟹黄堡。
新需求来了!我们不仅要告诉 Python 循环在何时执行,还要在某个时刻强制终止循环。一切的一切,都需要我们对循环进行更精细的控制。
下面一篇文章就让我来带你认识两种常用的 循环控制语句(break与continue)。