条件与循环|第三部分:流程控制与数据结构操作 (Control Flow & Data Structures Manipulation)

发布于 2025-09-11 分类: Python
系列文章: Python全方位教程
第 1 部分: Python语言概览|第一部分:Python入门与环境搭建 (Python Foundations) 第 2 部分: 搭建开发环境|第一部分:Python入门与环境搭建 (Python Foundations) 第 3 部分: Python基本语法与规范|第一部分:Python入门与环境搭建 (Python Foundations) 第 4 部分: 数据类型深入解析|第二部分:Python核心数据类型与运算符 (Core Data Types & Operators) 第 5 部分: 运算符大全|第二部分:Python核心数据类型与运算符 (Core Data Types & Operators) 第 6 部分: 条件与循环|第三部分:流程控制与数据结构操作 (Control Flow & Data Structures Manipulation) (当前) 第 7 部分: 数据结构高级操作|第三部分:流程控制与数据结构操作 (Control Flow & Data Structures Manipulation) 第 8 部分: 函数|第四部分:函数、模块与代码组织 (Functions, Modules & Code Organization) 第 9 部分: 模块与包|第四部分:函数、模块与代码组织 (Functions, Modules & Code Organization) 第 10 部分: 类与对象|第五部分:面向对象编程 (Object-Oriented Programming - OOP) 第 11 部分: OOP核心特性|第五部分:面向对象编程 (Object--Oriented Programming - OOP) 第 12 部分: 高级OOP主题|第五部分:面向对象编程 (Object-Oriented Programming - OOP) 第 13 部分: 迭代与生成|第六部分:高级Python编程 (Advanced Python) 第 15 部分: 内存管理与性能|第六部分:高级Python编程 (Advanced Python) 第 16 部分: 文件与目录操作|第七部分:Python标准库精选 (The Standard Library) 第 17 部分: 数据处理与序列化|第七部分:Python标准库精选 (The Standard Library) 第 18 部分: 网络与并发编程|第七部分:Python标准库精选 (The Standard Library) 第 20 部分: 系统交互|第七部分:Python标准库精选 (The Standard Library) 第 21 部分: 数据科学与分析入门|第八部分:Python生态与实战应用 (Ecosystem & Applications) 第 22 部分: Web开发入门|第八部分:Python生态与实战应用 (Ecosystem & Applications) 第 23 部分: GUI编程入门|第八部分:Python生态与实战应用 (Ecosystem & Applications) 第 24 部分: 图像处理入门|第八部分:Python生态与实战应用 (Ecosystem & Applications) 第 25 部分: 自动化脚本|第八部分:Python生态与实战应用 (Ecosystem & Applications) 第 26 部分: Python备忘单 (Cheatsheet)|第九部分:附录与资源 (Appendix & Resources) 第 27 部分: 常见面试题与解答|第九部分:附录与资源 (Appendix & Resources) 第 28 部分: 官方文档与其他学习资源链接|第九部分:附录与资源 (Appendix & Resources)

欢迎来到Python编程的核心地带!如果说之前的章节是让你认识这个世界的“名词”和“动词”,那么本章就是教你如何组织语言、构建“句子”和“段落”,让你的程序能够讲述一个完整的故事。这就是流程控制

想象一下,你正站在一个十字路口。向左走,是阳光明媚的沙滩;向右走,是白雪皑皑的高山。你的选择决定了接下来的风景。程序也一样,它需要根据不同的条件做出不同的选择。这就是条件判断

再想象一下,你是一位勤劳的邮差,需要将信件挨家挨户地送到一条街上的每一户人家。这个重复性的工作,就是循环

掌握了条件与循环,你就掌握了编写几乎所有复杂程序的关键能力。它们是程序逻辑的“骨架”,支撑起所有智能行为。让我们开始构建这个骨架吧!

6.1 条件判断 (if, elif, else 语句)

这是程序用来“做决定”的基本工具。它允许你的代码根据一个条件的真假来选择执行哪一个代码块。

if 语句:最简单的选择

if 语句检查一个条件。如果条件为 True,它就执行紧随其后的代码块。如果为 False,就直接跳过。

语法关键:条件后面必须有冒号 :,并且紧接着的代码块必须缩进(通常是4个空格)。缩进是Python语法的一部分,至关重要!

weather = "sunny"

if weather == "sunny":
    print("太棒了!今天出门带上太阳镜。")
    print("记得涂防晒霜哦!")

print("祝你一天愉快!") # 这行代码没有缩进,所以无论if条件如何,它总会执行

运行结果:

太棒了!今天出门带上太阳镜。
记得涂防晒霜哦!
祝你一天愉快!

if-else 语句:二选一

当你不仅想在条件为真时做点什么,还想在条件为假时做另一些事,else 就派上用场了。

age = 16

if age >= 18:
    print("您已成年,可以进入该区域。")
else:
    print("抱歉,您还未成年,禁止入内。")

运行结果:

抱歉,您还未成年,禁止入内。

if-elif-else 语句:多重选择

当你有多个互斥的条件需要判断时,就像在做一道多选题,elif (else if的缩写) 就登场了。Python会从上到下依次检查,一旦找到一个为 True 的条件,就执行其代码块,然后跳过剩下的所有 elifelse

score = 85

if score >= 90:
    print("优秀 (A)")
elif score >= 80:
    print("良好 (B)")
elif score >= 60:
    print("及格 (C)")
else:
    print("不及格 (D)")

运行结果:

良好 (B)

程序检查 score >= 90 (85 >= 90 是 False),跳过。接着检查 score >= 80 (85 >= 80 是 True),执行对应的 print 语句,然后整个 if-elif-else 结构结束。

6.2 match-case 结构化模式匹配 (Python 3.10+)

这是Python 3.10版本引入的一个超级酷炫的新特性!你可以把它看作是 if-elif-else 的一个更强大、更优雅的替代品,尤其是在处理特定值的匹配时。

它就像一个高级的“对号入座”系统。

# 假设这是一个API返回的状态码
status_code = 404

match status_code:
    case 200:
        print("成功 - OK")
    case 404:
        print("未找到 - Not Found")
    case 500:
        print("服务器内部错误 - Internal Server Error")
    case _: # 这个下划线 _ 是一个通配符,匹配任何其他情况
        print("未知的状态码")

运行结果:

未找到 - Not Found

match-case 的代码结构清晰,可读性更高,并且它还有更高级的“模式匹配”功能,我们将在后续高级章节中探索。如果你的Python版本是3.10或更高,强烈推荐尝试它!

6.3 for 循环:遍历的艺术

for 循环是用来遍历任何可迭代对象(如列表、元组、字符串、字典等)中每个元素的强大工具。它就像一个自动化的“点名器”,会把序列里的每个成员都叫出来一次。

# 遍历一个列表
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(f"我喜欢吃 {fruit}")

# 遍历一个字符串
for letter in "Python":
    print(letter)

运行结果:

我喜欢吃 apple
我喜欢吃 banana
我喜欢吃 cherry
P
y
t
h
o
n

range() 函数联用
当你需要循环一个固定的次数时,range() 函数是 for 循环的最佳拍档。

  • range(5) 会生成从 0 到 4 的数字序列 (0, 1, 2, 3, 4)
  • range(1, 6) 会生成从 1 到 5 的数字序列 (1, 2, 3, 4, 5)
# 打印从0到4的数字
for i in range(5):
    print(f"当前数字是: {i}")

# 计算1到100的和
total = 0
for number in range(1, 101):
    total += number
print(f"1到100的和是: {total}") # 输出: 5050

6.4 while 循环:条件不息,循环不止

while 循环会在其后的条件保持为 True 的情况下,持续不断地执行一个代码块。它就像一个不知疲倦的哨兵,只要指令牌上写着“继续”,它就会一直站岗。

⚠️ 危险警告: 使用 while 循环时,必须确保循环内部有代码能最终让条件变为 False,否则你就会创造一个无限循环,程序会一直运行下去直到被强制停止!

# 一个简单的倒计时
count = 5
while count > 0:
    print(f"{count}...")
    count -= 1 # 关键!让count的值不断减小,最终使条件变为False

print("发射!🚀")

运行结果:

5...
4...
3...
2...
1...
发射!🚀

6.5 循环控制语句 (break, continue, pass)

有时候,在循环的内部,我们需要更精细地控制它的行为。

  • break (中断): 立即终止并跳出整个循环(无论是 for 还是 while)。就像在游戏中按下“退出关卡”按钮。

    # 在列表中寻找第一个负数
    numbers = [1, 5, 8, 9, -2, 4, 7]
    for num in numbers:
        if num < 0:
            print(f"找到了第一个负数: {num}")
            break # 找到就立刻停止循环
    
  • continue (继续): 立即结束本次循环,跳过当前迭代中余下的代码,直接开始下一次迭代。就像在流水线上看到一个次品,直接跳过它,处理下一个。

    # 打印1到10之间所有的奇数
    for i in range(1, 11):
        if i % 2 == 0: # 如果i是偶数
            continue   # 就跳过本次循环的print语句
        print(i)
    
  • pass (占位): 它什么也不做,就是一个占位符。当你语法上需要一个代码块,但逻辑上你还没想好要写什么时,可以用 pass 来避免程序报错。

    # 假设我们未来要在这里写一些复杂的逻辑
    if some_condition:
        pass # TODO: 在这里添加处理逻辑
    else:
        print("处理其他情况")
    

6.6 for-elsewhile-else 循环结构

这是Python一个非常独特且优雅的特性!循环语句后面也可以跟一个 else 块。

这个 else 块的执行时机是:当循环正常、完整地执行完毕(即没有被 break 语句中途打断)时,else 块的代码就会被执行。

绝佳的比喻:把它想象成一个“寻宝”任务。

  • for 循环是你的“搜寻过程”。
  • break 是你“找到了宝藏”。
  • else 是你“搜遍了所有地方,但一无所获”之后要做的事。
# 示例:检查一个列表中是否含有某个特定元素
my_list = [1, 3, 5, 7]
search_for = 6

for item in my_list:
    if item == search_for:
        print(f"找到了! {search_for} 在列表中。")
        break
else: # 如果for循环正常结束(没有break)
    print(f"找遍了整个列表,也没有找到 {search_for}。")

运行结果:

找遍了整个列表,也没有找到 6。

如果我们将 search_for 改为 5break 就会被触发,else 块就不会执行。这个结构在编写搜索逻辑时非常有用,能让代码更简洁。


太不可思议了!你已经掌握了编程的“语法”和“逻辑”。你现在可以编写出能够根据不同输入做出不同反应、能够自动处理成千上万条数据的智能程序了。ifforwhile 是你代码库中最强大的三件法宝。

我们已经学会了如何控制流程,下一章,我们将“重返”我们熟悉的数据结构(字符串、列表、字典等),但这一次,我们将带上新学会的循环和判断技巧,去探索它们更高级的操作。你将学会切片、推导式、深拷贝等一系列炫酷的“魔法”,让你的数据处理能力提升到一个全新的境界!准备好迎接更强大的自己了吗?我们下一章见!


-- 感谢阅读 --