Python 流程控制之 while 循环(八)

Python 流程控制之 while 循环

一、引言

在编程中,我们经常会遇到需要重复执行某段代码的情况。例如,我们要计算从 1 到 100 的整数之和,或者需要不断地从用户那里获取输入直到用户输入特定的指令。Python 中的 while 循环就是为解决这类问题而设计的一种流程控制结构。while 循环允许程序在满足特定条件的情况下,重复执行一段代码块,直到条件不再满足为止。本文将详细介绍 Python 中 while 循环的使用方法、原理以及一些常见的应用场景。

二、while 循环的基本语法

2.1 语法结构

while 循环的基本语法结构如下:

python 复制代码
# 当条件为 True 时,执行循环体中的代码
while condition:
    # 循环体,包含需要重复执行的代码
    statement1
    statement2
    # 可以有更多的语句

这里的 condition 是一个布尔表达式,它会被计算出一个布尔值(TrueFalse)。如果 condition 的值为 True,则会执行循环体中的代码;执行完循环体后,会再次检查 condition 的值,如果仍然为 True,则继续执行循环体,如此反复,直到 condition 的值变为 False,此时循环结束,程序继续执行循环后面的代码。

2.2 示例代码

下面是一个简单的 while 循环示例,用于打印从 1 到 5 的整数:

python 复制代码
# 初始化一个变量 i,用于控制循环次数
i = 1
# 当 i 小于等于 5 时,执行循环体
while i <= 5:
    # 打印当前 i 的值
    print(i)
    # 将 i 的值加 1,以便下次循环时检查不同的条件
    i = i + 1

在这个示例中,首先将变量 i 初始化为 1。然后进入 while 循环,检查 i <= 5 这个条件,由于此时 i 的值为 1,条件为 True,所以会执行循环体中的代码,即打印 i 的值并将 i 的值加 1。接着再次检查条件,此时 i 的值为 2,条件仍然为 True,继续执行循环体。这个过程会一直重复,直到 i 的值变为 6,此时 i <= 5 这个条件为 False,循环结束。

三、while 循环的执行流程

3.1 详细步骤

while 循环的执行流程可以分为以下几个步骤:

  1. 条件判断 :程序首先会计算 while 后面的条件表达式的值。如果条件为 True,则进入步骤 2;如果条件为 False,则跳过循环体,直接执行循环后面的代码。
  2. 执行循环体 :如果条件为 True,则会执行循环体中的代码。循环体可以包含一条或多条语句,这些语句会按照顺序依次执行。
  3. 再次条件判断 :循环体执行完毕后,程序会再次计算条件表达式的值。如果条件仍然为 True,则回到步骤 2,继续执行循环体;如果条件变为 False,则循环结束,程序继续执行循环后面的代码。

3.2 流程图

plaintext 复制代码
开始
|
|-- 计算条件表达式的值
|   |-- 条件为 True
|   |   |-- 执行循环体
|   |   |-- 再次计算条件表达式的值
|   |   |   |-- 条件为 True
|   |   |   |   |-- 回到执行循环体
|   |   |   |-- 条件为 False
|   |   |       |-- 循环结束,执行后续代码
|   |-- 条件为 False
|       |-- 循环结束,执行后续代码
结束

3.3 示例代码分析

python 复制代码
# 初始化变量 num,用于存储当前数字
num = 0
# 当 num 小于 3 时,执行循环体
while num < 3:
    # 打印当前 num 的值
    print("当前数字是:", num)
    # 将 num 的值加 1
    num = num + 1
# 循环结束后,打印提示信息
print("循环结束")

在这个示例中,程序首先初始化变量 num 为 0。然后进入 while 循环,计算 num < 3 这个条件,由于 num 的值为 0,条件为 True,所以执行循环体,打印当前 num 的值并将 num 的值加 1。接着再次计算条件,此时 num 的值为 1,条件仍然为 True,继续执行循环体。当 num 的值变为 3 时,num < 3 这个条件为 False,循环结束,程序执行循环后面的代码,打印"循环结束"。

四、while 循环的应用场景

4.1 计数循环

while 循环可以用于实现计数循环,即重复执行某段代码指定的次数。下面是一个计算 1 到 10 的整数之和的示例:

python 复制代码
# 初始化变量 sum,用于存储累加的结果
sum = 0
# 初始化变量 i,用于控制循环次数
i = 1
# 当 i 小于等于 10 时,执行循环体
while i <= 10:
    # 将当前 i 的值累加到 sum 中
    sum = sum + i
    # 将 i 的值加 1
    i = i + 1
# 打印累加的结果
print("1 到 10 的整数之和是:", sum)

在这个示例中,使用 while 循环从 1 到 10 进行计数,每次循环将当前的数字累加到 sum 中,最终得到 1 到 10 的整数之和。

4.2 用户输入验证

while 循环可以用于验证用户输入,直到用户输入符合要求的内容为止。下面是一个简单的示例,要求用户输入一个大于 0 的整数:

python 复制代码
# 初始化变量 valid_input 为 False,表示输入尚未验证通过
valid_input = False
# 当 valid_input 为 False 时,执行循环体
while not valid_input:
    try:
        # 获取用户输入
        num = int(input("请输入一个大于 0 的整数: "))
        # 检查用户输入的数字是否大于 0
        if num > 0:
            # 如果大于 0,将 valid_input 设为 True,表示输入验证通过
            valid_input = True
            # 打印用户输入的数字
            print("你输入的有效数字是:", num)
        else:
            # 如果小于等于 0,提示用户重新输入
            print("输入无效,请输入一个大于 0 的整数。")
    except ValueError:
        # 如果用户输入的不是有效的整数,提示用户重新输入
        print("输入无效,请输入一个有效的整数。")

在这个示例中,使用 while 循环不断获取用户输入,直到用户输入一个大于 0 的整数为止。如果用户输入的不是有效的整数或者输入的整数不大于 0,会提示用户重新输入。

4.3 模拟游戏循环

在游戏开发中,while 循环可以用于模拟游戏的主循环,不断更新游戏状态、处理用户输入和绘制游戏画面,直到游戏结束。下面是一个简单的猜数字游戏示例:

python 复制代码
import random

# 生成一个 1 到 100 之间的随机整数
secret_number = random.randint(1, 100)
# 初始化变量 guess,用于存储用户的猜测
guess = 0
# 初始化变量 attempts,用于记录用户的猜测次数
attempts = 0
# 当用户的猜测不等于秘密数字时,执行循环体
while guess != secret_number:
    try:
        # 获取用户的猜测
        guess = int(input("猜一个 1 到 100 之间的整数: "))
        # 猜测次数加 1
        attempts = attempts + 1
        # 检查用户的猜测与秘密数字的大小关系
        if guess < secret_number:
            # 如果猜测的数字小于秘密数字,提示用户猜大一点
            print("猜小了,再试一次。")
        elif guess > secret_number:
            # 如果猜测的数字大于秘密数字,提示用户猜小一点
            print("猜大了,再试一次。")
    except ValueError:
        # 如果用户输入的不是有效的整数,提示用户重新输入
        print("输入无效,请输入一个有效的整数。")
# 当用户猜对时,打印恭喜信息和猜测次数
print(f"恭喜你,猜对了!你一共用了 {attempts} 次尝试。")

在这个示例中,使用 while 循环不断获取用户的猜测,根据用户的猜测与秘密数字的大小关系给出提示,直到用户猜对为止。同时,记录用户的猜测次数,最后打印恭喜信息和猜测次数。

五、while 循环中的 break 和 continue 语句

5.1 break 语句

break 语句用于在循环体中提前终止循环,即使循环条件仍然为 True。下面是一个示例,当找到第一个能被 5 整除的数字时,就终止循环:

python 复制代码
# 初始化变量 i,用于控制循环次数
i = 1
# 当 i 小于等于 10 时,执行循环体
while i <= 10:
    # 检查 i 是否能被 5 整除
    if i % 5 == 0:
        # 如果能被 5 整除,打印当前数字并使用 break 语句终止循环
        print("找到第一个能被 5 整除的数字:", i)
        break
    # 将 i 的值加 1
    i = i + 1
# 循环结束后,打印提示信息
print("循环结束")

在这个示例中,当 i 的值为 5 时,i % 5 == 0 这个条件为 True,执行 break 语句,循环立即终止,程序继续执行循环后面的代码,打印"循环结束"。

5.2 continue 语句

continue 语句用于跳过当前循环体中剩余的代码,直接进入下一次循环的条件判断。下面是一个示例,打印 1 到 10 之间不能被 3 整除的数字:

python 复制代码
# 初始化变量 i,用于控制循环次数
i = 1
# 当 i 小于等于 10 时,执行循环体
while i <= 10:
    # 检查 i 是否能被 3 整除
    if i % 3 == 0:
        # 如果能被 3 整除,使用 continue 语句跳过当前循环体中剩余的代码,直接进入下一次循环
        i = i + 1
        continue
    # 打印当前 i 的值
    print(i)
    # 将 i 的值加 1
    i = i + 1

在这个示例中,当 i 的值能被 3 整除时,执行 continue 语句,跳过 print(i) 语句,直接进入下一次循环的条件判断。

六、while 循环与 else 子句

6.1 基本语法

在 Python 中,while 循环可以带有一个可选的 else 子句,其基本语法如下:

python 复制代码
# 当条件为 True 时,执行循环体中的代码
while condition:
    # 循环体,包含需要重复执行的代码
    statement1
    statement2
    # 可以有更多的语句
else:
    # 当循环正常结束(即不是通过 break 语句终止)时,执行这里的代码
    statement3
    statement4
    # 可以有更多的语句

else 子句中的代码会在循环正常结束(即循环条件变为 False)时执行,但如果循环是通过 break 语句终止的,则不会执行 else 子句中的代码。

6.2 示例代码

python 复制代码
# 初始化变量 i,用于控制循环次数
i = 1
# 当 i 小于等于 5 时,执行循环体
while i <= 5:
    # 打印当前 i 的值
    print(i)
    # 将 i 的值加 1
    i = i + 1
else:
    # 当循环正常结束时,打印提示信息
    print("循环正常结束")

在这个示例中,循环会正常结束,因为 i 的值会逐渐增加,直到 i <= 5 这个条件变为 False。所以循环结束后,会执行 else 子句中的代码,打印"循环正常结束"。

下面是一个包含 break 语句的示例:

python 复制代码
# 初始化变量 i,用于控制循环次数
i = 1
# 当 i 小于等于 5 时,执行循环体
while i <= 5:
    # 检查 i 是否等于 3
    if i == 3:
        # 如果 i 等于 3,使用 break 语句终止循环
        break
    # 打印当前 i 的值
    print(i)
    # 将 i 的值加 1
    i = i + 1
else:
    # 由于循环是通过 break 语句终止的,所以不会执行这里的代码
    print("循环正常结束")

在这个示例中,当 i 的值为 3 时,执行 break 语句,循环终止,不会执行 else 子句中的代码。

七、总结与展望

7.1 总结

Python 中的 while 循环是一种强大的流程控制结构,它允许程序在满足特定条件的情况下,重复执行一段代码块。通过合理使用 while 循环,我们可以实现计数循环、用户输入验证、模拟游戏循环等多种功能。同时,breakcontinue 语句可以让我们在循环体中灵活控制循环的执行流程,else 子句则为循环正常结束时提供了额外的执行代码的机会。

7.2 展望

在后续的 Python 学习中,while 循环将与其他的流程控制语句(如 if 判断语句、for 循环等)以及函数、类等结合使用,构建出更加复杂和强大的程序。例如,在处理文件读写、网络通信等任务时,while 循环可以用于不断读取数据或接收消息,直到满足特定的条件为止。随着对 Python 编程的深入学习,我们还会遇到更多复杂的应用场景,需要不断提升运用 while 循环的能力,以实现高效、准确的程序功能。

相关推荐
CodeJourney.23 分钟前
Python数据可视化领域的卓越工具:深入剖析Seaborn、Plotly与Pyecharts
人工智能·算法·信息可视化
Acrelgq2323 分钟前
工厂能耗系统智能化解决方案 —— 安科瑞企业能源管控平台
大数据·人工智能·物联网
Lucifer三思而后行26 分钟前
零基础玩转AI数学建模:从理论到实战
人工智能·数学建模
_一条咸鱼_2 小时前
Python 数据类型之可变与不可变类型详解(十)
人工智能·python·面试
_一条咸鱼_2 小时前
Python 入门之基本运算符(六)
python·深度学习·面试
_一条咸鱼_2 小时前
Python 语法入门之基本数据类型(四)
人工智能·深度学习·面试
2201_754918412 小时前
卷积神经网络--手写数字识别
人工智能·神经网络·cnn
_一条咸鱼_2 小时前
Python 用户交互与格式化输出(五)
人工智能·深度学习·面试
_一条咸鱼_2 小时前
Python 流程控制之 for 循环(九)
人工智能·python·面试
_一条咸鱼_2 小时前
Python 语法入门之流程控制 if 判断(七)
人工智能·python·面试