我们在编写程序时,一定会遇到需要重复执行某些指令的场景。举一个简单的例子,在前面讲分支结构时以游戏通关为例,如果第一关结束时分值不够则通关失败需要重新闯关,重新闯关这就是一个重复性的动作,类似的还有很多相似场景,代入编程中就可以使用循环来解决这类问题,这就是我们今天要讲的“循环结构”。
所谓循环结构,就是程序中控制某条或某些指令重复执行的结构。在Python中构造循环结构有两种做法,一种是使用 for、in 关键字构造for-in循环
,另一种是使用 while 关键字构造while循环
。
如果明确的知道问题需要重复的次数,我们推荐使用 for-in 循环来解决,同时 for-in 循环也是 Python 中非常常用的一种循环结构,for-in 循环适用于绝大部分问题。
举个简单的小例子,将“hello,world”重复打印 100 次:
for i in range(100):
print("hello,world")
对上述代码做出解释:
(1)其中 range 是一个专门用来构造有规律的整数容器的方法,在此的 range(100)
构造出来的是 [0, 99] 范围的容器,具体的 range 用法下篇文章来讲;
(2)for-in 循环结构循环次数取决于 in 关键字后面容器的长度,在此 range(100)
构造出来的是包含 0~99 的容器,所以此处 for-in 循环执行 100 次;
(3)for-in 循环每执行一次,for 关键字后面的变量(此处为 i)就会在容器中拿出一个元素赋值;
(4)for-in 循环每执行一次,缩进中的代码块就会执行一遍。
由此大家记住 for-in 循环的语法:
for 变量 in 容器:
代码块
如果问题没有明确的循环次数,建议使用 while 循环。 while 循环通过一个能够产生 bool 值的表达式来控制循环,当表达式的值为 True 时继续循环,值为 False 时结束循环。
举个小例子:我们通过一个“猜数字”的小游戏来看看如何使用while循环。游戏规则:程序随机选取一个 1~100 之间的整数,玩家输入自己猜的数字,计算机给出对应的提示(再大一点、再小一点或者是猜中了),如果玩家猜中了数字,提示游戏结束。
import random
result = random.randint(1, 100)
flag = True
while flag:
number = int(input('请输入:'))
if number < result:
print('再大一点')
elif number > result:
print('再小一点')
else:
print('恭喜你猜对了,游戏结束!')
flag = False
对上述代码做出解释:
(1)random 模块是 Python 中的一个随机模块,我们借助其中的 randint 方法从 1~100 之间随机生成了一个整数;
(2)flag 这个变量便是一个表达式,用于控制 while 循环能否执行,每次 while 循环执行前都要判断 flag 的值是否为 True;
(3)当猜对后将 flag 的值由 True 变为 False,即可结束掉 while 循环,什么时候判断猜对便是由上节课讲的分支结构来判断。
我们再来介绍 while 循环的语法结构:
while 表达式:
代码块
以上便是常用的循环结构的讲解,后续还会有习题供大家练习。
我们人生不能永远停留在重复的事情上,程序也是如此,并不是说程序必须在设定的循环次数运行完以后停止,有时程序也要被及时中断,所以循环该停掉时就要做到当机立断,这里我们介绍 break 和 continue 两个循环关键字,帮助你在编程中更好的让程序“停止”。
我们举一个例子,来对比 break 和 continue:
for i in range(1, 6):
if i == 3:
print('***')
continue
print('+++')
else:
print(i)
"""
1
2
***
4
5
"""
for i in range(1, 6):
if i == 3:
print('***')
break
print('+++')
else:
print(i)
"""
1
2
***
"""
上述我们分别给出来两段代码和运行结果,大家可以看到+++是没有被打印的,证明了两个关键字立即结束的作用;continue 打印了 4 和 5 而 break 没有打印 4 和 5,证明了 break 是立刻结束循环而 continue 还可以进入下一次循环。
Python 中的循环结构(上)给大家讲述的就是基础中比较重要的知识点了,希望大家在学习之余还能够自行搜寻更多的资料,争取早日融会贯通。