课时 9:循环语句(while 循环与循环控制)

请添加图片描述
在这里插入图片描述



一、课程导入

欢迎来到 Python 循环语句的第二部分课程!在上一节课中,我们学习了 for 循环,它用于遍历可迭代对象中的每个元素。今天,我们将学习另一种重要的循环结构 ——while 循环,它允许程序在条件为真时重复执行代码块。同时,我们还将学习循环控制语句 break 和 continue,它们可以灵活地控制循环的执行流程。

本节课的学习目标

  1. 掌握 while 循环的基本语法和执行逻辑

  2. 理解并避免死循环的条件设置

  3. 掌握 break 和 continue 语句的使用方法及其区别

  4. 能够使用 while 循环实现累加、累乘等基础应用

  5. 能够编写包含循环控制的交互式程序(如猜数字游戏)

在编程中,循环结构是实现重复执行任务的关键工具。while 循环特别适合于那些不知道循环次数,但知道终止条件的场景。例如,用户登录验证、游戏循环、数据验证等场景都可以使用 while 循环来实现。

现在,让我们开始今天的学习!

二、while 循环基础

2.1 while 循环的基本语法

while 循环是 Python 中另一种常用的循环结构,它会在条件表达式为真时重复执行代码块。与 for 循环不同,while 循环更适合于不知道具体循环次数,但知道终止条件的情况。

while 循环的基本语法格式

while 条件表达式:
    代码块

执行逻辑

  1. 首先评估条件表达式的真假值。

  2. 如果条件为真,执行缩进的代码块。

  3. 代码块执行完毕后,再次评估条件表达式。

  4. 重复步骤 2 和 3,直到条件表达式为假,循环结束。

示例 1:简单的 while 循环

count = 1
while count <= 5:
    print(f"Count: {count}")
    count += 1

执行结果

Count: 1

Count: 2

Count: 3

Count: 4

Count: 5

执行过程解析

  1. 初始化变量 count 为 1。

  2. 检查条件 count <=5,条件为真,执行循环体。

  3. 打印当前 count 的值。

  4. 将 count 增加 1。

  5. 再次检查条件 count <=5,直到 count 变为 6 时条件为假,循环结束。

2.2 while 循环的执行流程

为了更好地理解 while 循环的执行流程,我们可以通过以下步骤来分析:

  1. 条件评估:首先计算条件表达式的布尔值。

  2. 条件判断:如果条件为真,执行循环体;如果为假,结束循环。

  3. 循环体执行:执行缩进的代码块。

  4. 循环继续:循环体执行完毕后,流程返回到条件评估步骤,继续循环。

执行流程图

开始 → 评估条件 → 条件为真 → 执行循环体 → 返回评估条件 → 条件为假 → 结束

关键特性

  • while 循环先判断条件,后执行循环体。

  • 如果条件一开始就为假,循环体可能一次都不会执行。

  • 循环体中必须有改变条件表达式的操作,否则会导致死循环。

2.3 避免死循环

在使用 while 循环时,最常见的错误就是无意中创建了死循环。死循环是指条件表达式永远为真,导致循环无限执行下去。

死循环示例

# 错误示例:死循环
count = 1
while count <= 5:
    print("Count:", count)
    # 忘记增加count的值,导致条件永远为真

避免死循环的方法

  1. 确保循环体内有改变条件表达式的操作:在每次循环中,必须有一个操作改变条件表达式中的变量,使其最终导致条件为假。

  2. 设置合理的终止条件:确保条件表达式最终会变为假。

  3. 使用 break 语句:在特定条件下强制退出循环(我们将在后面详细讨论)。

正确示例

count = 1
while count <= 5:
    print("Count:", count)
    count += 1  # 增加count的值,确保条件最终为假

注意:在开发过程中,如果遇到死循环,可以按下Ctrl+C组合键来强制终止程序。

2.4 while 循环与 for 循环的比较

while 循环和 for 循环都是 Python 中常用的循环结构,它们各有优缺点和适用场景:

适用场景比较

场景 for 循环 while 循环
已知循环次数 更适合 可以使用
未知循环次数,但知道终止条件 不适合 更适合
遍历可迭代对象 更适合 不适合
根据条件重复执行 不适合 更适合

示例对比

# 使用for循环计算1到100的和
sum_for = 0
for i in range(1, 101):
    sum_for += i

# 使用while循环计算1到100的和
sum_while = 0
i = 1
while i <= 100:
    sum_while += i
    i += 1

关键区别

  • for 循环适用于已知循环次数或遍历可迭代对象的场景。

  • while 循环适用于不知道循环次数,但知道终止条件的场景。

  • while 循环需要手动管理循环变量,而 for 循环会自动管理。

三、循环控制语句

3.1 break 语句

break 语句用于提前终止当前循环,无论循环条件是否为真,程序会立即跳出循环,执行循环体后面的代码。

语法格式

while 条件表达式:
    代码块
    if 终止条件:
        break
    代码块

示例 1:在循环中使用 break

count = 1
while count <= 5:
    if count == 3:
        break  # 当count等于3时,终止循环
    print("Count:", count)
    count += 1

执行结果

Count: 1

Count: 2

执行过程解析

  1. count 初始化为 1。

  2. 第一次循环:count <=5 为真,检查 count 是否为 3,不成立,打印 Count:1,count 增加到 2。

  3. 第二次循环:count <=5 为真,检查 count 是否为 3,不成立,打印 Count:2,count 增加到 3。

  4. 第三次循环:count <=5 为真,检查 count 是否为 3,成立,执行 break,循环终止。

示例 2:在用户输入中使用 break

while True:
    command = input("请输入命令(输入'exit'退出):")
    if command == "exit":
        break  # 输入'exit'时退出循环
    print(f"执行命令:{command}")

执行结果

请输入命令(输入'exit'退出):hello

执行命令:hello

请输入命令(输入'exit'退出):world

执行命令:world

请输入命令(输入'exit'退出):exit

3.2 continue 语句

continue 语句用于跳过当前循环的剩余代码块,直接开始下一次循环。与 break 不同,continue 不会终止整个循环,只是跳过当前迭代。

语法格式

while 条件表达式:
    代码块
    if 跳过条件:
        continue
    代码块

示例 1:在循环中使用 continue

count = 0
while count < 5:
    count += 1
    if count == 3:
        continue  # 当count等于3时,跳过本次循环的剩余代码
    print("Count:", count)

执行结果

Count: 1

Count: 2

Count: 4

Count: 5

执行过程解析

  1. count 初始化为 0。

  2. 第一次循环:count <5 为真,count 增加到 1,检查 count 是否为 3,不成立,打印 Count:1。

  3. 第二次循环:count <5 为真,count 增加到 2,检查 count 是否为 3,不成立,打印 Count:2。

  4. 第三次循环:count <5 为真,count 增加到 3,检查 count 是否为 3,成立,执行 continue,跳过 print 语句。

  5. 第四次循环:count <5 为真,count 增加到 4,检查 count 是否为 3,不成立,打印 Count:4。

  6. 第五次循环:count <5 为真,count 增加到 5,检查 count 是否为 3,不成立,打印 Count:5。

  7. 第六次循环:count <5 为假,循环结束。

示例 2:筛选偶数

number = 0
while number < 10:
    number += 1
    if number % 2 == 0:
        continue  # 跳过偶数
    print("奇数:", number)

执行结果

奇数: 1

奇数: 3

奇数: 5

奇数: 7

奇数: 9

3.3 break 和 continue 的区别

break 和 continue 是两种不同的循环控制语句,它们的区别如下:

特性 break continue
作用 终止整个循环 跳过当前迭代,继续下一次迭代
执行位置 通常在条件判断之后 通常在条件判断之后
对循环的影响 立即退出循环,不再执行后续迭代 只影响当前迭代,不影响后续迭代
适用场景 需要提前终止循环的场景 需要跳过某些特定情况的场景

示例对比

# 使用break的示例
count = 1
while count <= 5:
    if count == 3:
        break  # 终止循环
    print("Count:", count)
    count += 1
print("循环结束")

# 使用continue的示例
count = 0
while count < 5:
    count += 1
    if count == 3:
        continue  # 跳过当前迭代
    print("Count:", count)
print("循环结束")

执行结果对比

# break示例的输出
Count: 1
Count: 2
循环结束

# continue示例的输出
Count: 1
Count: 2
Count: 4
Count: 5
循环结束

3.4 循环中的 else 子句

在 Python 中,while 循环和 for 循环都可以带有一个可选的 else 子句。这个 else 子句会在循环正常结束(即没有通过 break 语句终止)时执行。

语法格式

while 条件表达式:
    代码块
else:
    代码块  # 当循环正常结束时执行

示例 1:使用 else 子句

count = 1
while count <= 5:
    print("Count:", count)
    count += 1
else:
    print("循环正常结束")  # 当count增加到6时,条件为假,执行else子句

执行结果

Count: 1

Count: 2

Count: 3

Count: 4

Count: 5

循环正常结束

示例 2:结合 break 使用 else 子句

count = 1
while count <= 5:
    if count == 3:
        break  # 当count等于3时,终止循环
    print("Count:", count)
    count += 1
else:
    print("循环正常结束")  # 由于break终止了循环,else子句不会执行

执行结果

Count: 1

Count: 2

示例 3:搜索特定元素

numbers = [1, 2, 3, 4, 5]
target = 3
index = 0

while index < len(numbers):
    if numbers[index] == target:
        print(f"找到目标元素{target}在索引{index}处")
        break
    index += 1
else:
    print(f"目标元素{target}未找到")

执行结果

找到目标元素3在索引2处

在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐