循环语句


介绍— “真正的平静,不是避开车马喧嚣,而是在心中修篱种菊”

循环语句是 Python 中一种重要的控制结构,它的作用是 让程序重复执行某段代码,直到满足特定的条件才会结束 ,这可以使程序能够有效地处理重复性任务和大量数据。

如果我希望计算从 1 一直加到 20 的最终结果,但是从 1 一直手写到 20 那肯定非常麻烦;又或者我想对一个列表中的里面的每一个元素都做相同的处理,对每个元素都写同样的代码效率又太低;又或者我希望通过程序反复获取用户的输入内容,但是又不可能用户每输入一次就再重新运行一遍程序。所以上面这些示例都需要用到循环语句来实现。

由循环语句控制的代码执行的顺序叫做 循环结构,在循环结构中,程序会根据条件的真假不断重复对应的代码块,直到不满足条件跳出循环。

在 Python 中循环语句共分为两种,一种是 条件循环 ,一种是 计数循环,让我们在下面的教程中深入学习。


条件循环

条件循环的关键词是 while ,也叫做 while 循环 ,它会允许程序根据指定的条件来判断是否重复执行一段代码,程序会一直循环到不再满足条件为止。来看下示意图:

无法显示

在 Python 中 while 循环的结构如下:

while <表达式>:
    # 内部代码块
    # 如果表达式结果为 True 那么会不断重复运行内部代码块

同样可以在 while 语句后新增 else 语句,在表达式的结果为 False 时,进入到 else 语句下面的代码块,不过一般 else 都会被省略,语法结构如下:

while <表达式>:
    # 内部代码块
    # 如果表达式结果为 True 会不断重复运行内部代码块,如果结果为 False,进入 else语句
else:
    # 代码块

【示例】来看一个计算 1 到 50 的总和的例子:

# 创建一个初始化变量,count 是总和,number 是每次要递增的数字
count = 0
number = 0
 
# 每次循环都对 number 变量值 +1 ,并将 +1 后的结果加给 count 变量
while number < 50:
    number = number + 1
    count = count + number
 
# 输出结果
print('总和是 :', count)

运行代码结果如下,此时输出的结果就是 1 到 50 的总和。

总和是 : 1275

让我们来分析一下这段代码,我们设定 number 是每次循环要相加的数字,我们的目的是从 1 一直加到 50,所以我们使用 while 循环函数,如果 number 没有达到 50,就让它进行 +1 操作,通过不断地 +1 我们就获得了 1 到 50 的所有数据,同时将每次循环后的 number 进行加法运算加到 count 中,这样就获得了 1 到 50 的所有 number 的总和。

上面的案例的逻辑思维方式在循环中非常常见,涉及到循环语句通常需要设定一个初始值。

让我们再来看一个示例:

【示例】通过循环提取列表中每个元素

# 定义一个列表
fruits =['苹果','香蕉','梨','西瓜','火龙果']
 
# 创建一个初始化索引变量
index = 0
 
# 每次循环都对 index 变量值+1,直到大小和列表长度相同
while index < len(fruits):
    fruit = fruits[index]
    print(fruit + '是我最喜欢的水果')
    index = index + 1

运行代码,结果如下:

苹果是我最喜欢的水果
香蕉是我最喜欢的水果
梨是我最喜欢的水果
西瓜是我最喜欢的水果
火龙果是我最喜欢的水果

在这个例子中,我们有一个水果列表 fruits。我们使用 while 循环来不断递增 index 索引。循环的条件是索引 index 小于列表的长度,然后对 fruits 列表按照索引提取相应的元素并输出。

当然,上面的循环列表使用我们即将学到的 for 循环可以更方便地表达。

在 Python 中 += 写法是递增的意思,写法是 x += n , n 是递增量。上面的示例中, number = number + 1 也可以写成 number += 1

另外,可以通过设定布尔值来实现 while 语句的无限循环,循环时使用 ctrl + c 来退出循环,这在后端的实时请求中非常有用。

【示例】 创建一个程序,不断询问用户的身高和体重,计算 BMI 指数。

# 定义一个布尔值
my_bool = True
 
# 因为我们的布尔值是 True 所以程序会一直循环不退出
while my_bool:
    height = float(input('请输入您的身高(米):'))
    weight = float(input('请输入您的体重(kg):'))
    BMI = weight / ( height * height )
    print('您的BMI指数是:',BMI,'\n请下一位继续:')

运行代码,输入指标测试:

请输入您的身高(米):>? 1.8
请输入您的体重(kg):>? 70
您的BMI指数是: 21.604938271604937
请下一位继续:
请输入您的身高(米):>? 1.85
请输入您的体重(kg):>? 75
您的BMI指数是: 21.913805697589478
请下一位继续:
请输入您的身高(米):

程序会一直询问用户的身高、体重信息,不断循环不停止,直到按下 ctrl + c 才会退出循环。


计数循环

计数循环的关键词是 for ,也叫做 for 循环,作用是 遍历一个可迭代对象,获取其中的每个元素依次进行操作,通常用于遍历字符串、列表、元组、字典、集合等数据结构。

for 循环会在可迭代对象中依次寻找元素,找到元素后就进行相应的代码处理,不断循环直到最后,示意图如下:

无法显示

在 Python 中,for 的结构如下:

for 变量 in 可迭代对象:
    # 内部代码块
    # 每次循环都执行一遍内部代码块

while 语句一样,for 后也可以新增 else 语句,在没有找到元素时,进入到 else 语句下面的代码块,不过一般 else 都会被省略,语法结构如下:

for 变量 in 可迭代对象:
    # 内部代码块
    # 每次循环都执行一遍内部代码块
else:
    # 代码块

【示例】使用 for 循环计算一个数据列表中的最大值和最小值

【思路】提前设定两个初始化的变量,一个设定为最大值,一个设定为最小值,然后循环列表中的每一个数字,一旦发现比最大值还大的数,那就用这个数更新这个最大值,同理,一旦发现比最小值还小的数,那就用这个数更新这个最小值。来看代码:

# 随意创建一个待计算的数据列表
my_list = [5,3,10,6,12,8,22,3]
 
# 创建一个初始化的最大值、最小值变量,使用 my_list[0] 的目的是确保这个元素在列表中
max_number = my_list[0]
min_number = my_list[0]
 
# 循环列表中的每一个数字,并进行判别赋值
for number in my_list:
    if number > max_number :
        max_number = number
    if number < min_number :
        min_number = number
 
# 输出结果
print('最大值是:',max_number)
print('最小值是:',min_number)

运行代码结果如下:

最大值是: 22
最小值是: 3

我们在代码中通过 for 循环的方式不断比较初始值和列表中的元素的最大值和最小值,不断更新这个初始值,将列表中的全部元素都循环一遍后就会得出我们想要的结果。


循环相关的内置函数

在 Python 中,与循环有关的内置函数比较多,常用的一些函数如下:

名称 描述
range 函数 用于生成一个数字序列便于循环提取。
zip 函数 用于将多个可迭代的对象逐个进行配对组合。
enumerate 函数 用于同时遍历集合中的元素及其对应的索引位置。

下面让我们结合一些案例,详细了解每个函数的用法:


字典循环

另外,for 循环也可以直接循环字典对象,在循环时有以下几点注意事项:

名称 描述
直接循环 直接循环读取字典的内容,输出的结果是 字典的键
循环字典的 values 方法 循环字典的 values 方法,输出的结果是 字典的值
循环字典的 items 方法 循环字典的 items 方法,输出的结果是 字典的键和值 的组合。

下面让我们结合一些案例,详细了解每个每一种方式:


循环语句关键字

在 Python 中,有一些关键字通常用在循环语句或者条件语句中来控制代码的执行流程,以下是一些常见的关键字:

名称 描述
break 关键字 用于在循环中提前终止循环,跳出整个循环体。
continue 关键字 用于跳过当前循环中的剩余代码,并直接进入下一次循环迭代。
pass 关键字 在代码块中不执行任何操作,通常用作占位符。

下面让我们通过一些示例来深入了解这些关键字:


循环的推导式

循环推导式(Comprehensions)是一种简洁而强大的语法,这种语法可以在一行内完成需要多行完成的循环结构。可以用来快速创建列表、集合、字典等数据结构。

我们在前面的列表、字典的教程中接触到了一些推导式的知识,在这里再次进行巩固:


例题

【例题1】使用 Python 找出 100 以内的所有质数(质数是指大于1的自然数中,除了1和自身以外没有其他因数的数)

【分析】质数的概念是只能被1和自身整除,不能被其他任何数整除。所以我们可以使用循环的方式,让这个数依次除1、2、3、4递增一直到它本身,如果发现这个数除了1或者本身外的取余结果都不是0,那说明这个数就是质数。

我们通过代码来实现:

# 定义一个结果变量列表
result = []
 
# 遍历2到100的所有数,依次做判断(1不是质数)
for number in range(2,101):
    # 默认这个数是质数
    is_prime = True
    # 使用循环对这个数字依次除上2、3、4递增一直到它本身-1(不能除1和它本身)
    for i in range(2,number):
        # 如果这个数除上某个数的余数等于0 ,说明这个数不是质数
        if number % i == 0 :
            # 将这个数的布尔值改成 False
            is_prime = False
            # 一旦判定这个数不是质数,后面就不用再计算,跳出这次循环
            break
    # 根据变量的布尔值来判断是否是质数,并确定是否要加入到列表中
    if is_prime :
        result.append(number)
 
# 输出包含所有质数的列表
print(result)

运行代码,结果如下:

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59,61, 67, 71, 73,
79, 83, 89, 97]

关注公众号【牧旗教程】,回复“更多例题”,获取更多题型进行训练~

您的打赏将帮助维护网站服务器的正常运营,并为作者的后续更新提供更多的动力。

无法显示 无法显示