Python 编程B08:程序控制结构(二)

B站影视 日本电影 2025-10-30 00:03 3

摘要:程序的执行往往需要重复某些操作。例如:计算 1~100 的累加和、遍历所有学生成绩、或模拟物体的运动过程。这种反复执行某段语句的机制称为“循环结构”。

6.4 循环结构程序设计

程序的执行往往需要重复某些操作。例如:计算 1~100 的累加和、遍历所有学生成绩、或模拟物体的运动过程。这种反复执行某段语句的机制称为“循环结构”。

Python 提供了两种基本循环语句,while 循环和 for 循环,并配合若干控制语句(break、continue、pass、else)实现灵活的流程控制。

6.4.1 while 循环

while 循环用于在条件成立时反复执行代码,直到条件为假时终止。

它适合“次数不确定但条件明确”的循环场景。

语法结构:

语句块

执行流程:

1、判断条件表达式是否为真(True);

2、若为真,执行循环体;

3、执行后回到判断处再次检测;

4、若条件为假(False),循环结束。

有三个关键要素控制着循环的正确执行:

• 初值:循环变量的起始值;

• 条件:循环的判断标准;

• 增量:更新循环变量的语句。

若缺少增量,将导致无限循环(又称“死循环”)。

例 6.4.1.1:累加求和

用 while 循环计算 1~100 的累加和。

print(f"1 + 2 + ... + 100 = {total}")1 + 2 + ... + 100 = 5050

6.4.2 for 循环

for 循环是一种“遍历循环”,用于依次访问可遍历结构(如 range)中的每个元素。

它更适合“次数确定”或“逐项处理”的任务。

语法结构:

语句块

(1)、字符串以及列表、文件等都是。

(2)变量依次获取可迭代对象中的每个元素,直到最后一个元素后循环自动结束。不需要显式增量语句。

例 6.4.2.1:累加求和

使用 for 循环计算 1~100 的和。

运行结果:

例 6.4.2.2:凯撒加密法

对输入的英文短语进行简单加密(凯撒移位 3 位)。

print(f"加密后结果:{result}")

运行结果(示例):

加密后结果:sbwkrq

(1)字符串是可迭代对象,for 循环可直接依次访问每个字符。

(2)本示例用到了 、 等内置函数。

6.4.3 循环结构控制语句

循环执行过程中,有时需要提前终止、跳过本次、保留占位或在循环结束后追加操作。

Python 提供了 4 种语句(break、continue、pass、else)实现这些控制。

6.4.3.1 break

break 用于提前终止当前循环,直接跳出循环体。

例 6.4.3.1:密码验证

用户最多尝试 3 次输入密码,若正确则立即退出循环,否则提示剩余次数。

print("三次机会已用完,账号暂时锁定。")

运行结果(示例):

登录成功!

6.4.3.2 continue

continue 用于跳过本次循环的剩余语句,直接进入下一次判断。

例 6.4.3.2:输出奇数

输出 1~20 之间的奇数。

print(i, end=" ")

运行结果:

1 3 5 7 9 11 13 15 17 19

6.4.3.3pass

pass 是,用于在语法上需要语句的位置暂时“占位”,让程序结构完整,但不执行任何操作。

例 6.4.3.3:测量代码耗时

模拟一个耗时操作,测量程序执行时间。

print(f"程序执行时间:{elapsed_time} 秒")

运行结果(示例):

程序执行时间:0.015024299966171384 秒

是 Python 标准库之一,用于处理与时间相关的操作。它既可以测量运行耗时,也可以实现延时、获取时间戳等功能。

6.4.3.4 else

循环语句可带 else,当循环未被 break 中断而正常结束时,执行 else 中的语句。

例 6.4.3.4:判断素数

判断输入的数是否为素数,若发现因子则提前结束循环。

print(f"{n} 是素数。")

运行结果(示例):

17 是素数。

6.4.4 循环嵌套与效率

当一个循环体中还包含另一个循环时,称为“循环嵌套”。

适用于多维数据处理或组合计算,但需注意效率问题。

要注意的是,外层循环与内层循环的总执行次数是它们的乘积,循环层数越多,执行时间通常越长。

例 6.4.4.1:九九乘法表

输出标准的九九乘法表。

i += 1

运行结果(部分):

……

例 6.4.4.2:百文百鸡

中国古代算术问题:用 100 文钱买了 100 只鸡。公鸡 5 文/只,母鸡 3 文/只,小鸡 1 文/3 只,三种鸡均至少 1 只。问公鸡、母鸡、小鸡各多少只?

print(f"公鸡:{cocks} 只,母鸡:{hens} 只,小鸡:{chicks} 只")

运行结果:

公鸡: 12 只,母鸡: 4 只,小鸡: 84 只

6.5 循环结构综合示例

例 6.5.1:猜数字游戏

让用户猜出系统随机生成的 1~100 之间的数字。

算法描述:

1、用 random.randint(1, 100) 生成目标数;

2、循环读取用户输入;

3、判断大小给提示;

4、猜中则 break 并输出次数。

print("太大了!")

运行结果(示例):

是 Python 的标准库之一,用于生成伪随机数。它常用于游戏、抽样、模拟实验等场景。

例 6.5.2:圆周率计算

方法一:BBP 公式法

使用 Bailey–Borwein–Plouffe 公式计算 π。

算法描述:

1、根据 BBP 公式:

π = Σ (1/16^k) × [4/(8k+1) − 2/(8k+4) − 1/(8k+5) − 1/(8k+6)]

2、循环累加若干项(如前 20 项);

3、输出 π 的近似值。

print(f"圆周率近似值(BBP 公式法):{pi}")

方法二:蒙特卡洛法

通过随机投点模拟圆面积与方形面积的比例,估算 π 值。

算法描述:

1、随机生成大量点坐标 (x, y),范围在 [0, 1];

2、判断点是否落在单位圆内(x² + y² ≤ 1);

3、统计圆内点数与总点数的比值;

4、根据比例 π ≈ 4 × (圆内点数 / 总点数) 计算圆周率。

print(f"圆周率近似值(蒙特卡洛法):{pi}")

例 6.5.3:AI 模拟训练循环

模拟神经网络权重在训练过程中的逐步收敛。

算法描述:

1、随机初始化参数 w;

2、设定学习率 α;

3、在每次循环中计算损失函数 L = (w − 0.5)²;

4、计算梯度 g = 2(w − 0.5);

5、根据更新公式 w ← w − α·g 迭代参数;

6、输出每轮训练后的权重与损失变化,观察收敛趋势。

print(f"第 {epoch} 轮:权重 = {round(w, 4)} 损失 = {round(loss, 6)}")

运行结果(部分):

第 20 轮:权重 = 0.49 损失 = 0.0001

小结

本次课介绍了 Python 的循环结构与控制语句:

while 循环:基于条件判断,适合未知次数的循环;

for 循环:基于遍历结构,适合顺序访问;

break、continue、pass、else:提供更灵活的循环控制;

循环嵌套:用于处理组合型问题,但需注意效率。

通过这些机制,程序可以完成重复计算、搜索、模拟和训练等任务。

下一次课将学习如何在程序出错时保持稳定运行,并掌握调试方法,让程序更健壮可靠。

“点赞有美意,赞赏是鼓励”

来源:学哥教育

相关推荐