Agent入门阶段-编程基础-Python:流程控制

前言

前两章解决了两个基础问题:

  • 第 1 章:Python 代码怎么运行
  • 第 2 章:Python 里有哪些基础数据类型

这一章开始进入"程序为什么会按某种顺序执行"。

所谓流程控制,就是你要告诉程序:

  • 什么时候执行这段代码
  • 什么时候跳过这段代码
  • 什么时候重复执行一段代码
  • 什么时候提前结束

如果没有流程控制,程序就只能机械地从上往下一行一行执行,几乎做不了真实任务。

这一章是后面函数、文件处理、接口调用、自动化脚本的基础,因为几乎所有程序都会用到:

  • 条件判断
  • 循环
  • 跳出循环
  • 跳过某次循环
  • 把多步规则翻译成代码

本章目标

学完后你至少应该能做到:

  • 能使用 if / elif / else 写条件判断
  • 能用 for 遍历列表、字符串、范围序列
  • 能用 while 表达"满足条件就重复执行"
  • 理解 breakcontinuepass 的区别
  • 能读懂和写出基础的列表推导式
  • 能把自然语言步骤翻译成清晰的代码流程

1. 什么是流程控制

可以把程序先想成一条默认路线:

python 复制代码
print("第一步")
print("第二步")
print("第三步")

这段代码没有任何分支和重复,所以它每次都会按固定顺序执行。

但现实任务通常不是这样简单。

例如:

  • 如果年龄满 18 岁,就允许注册
  • 如果库存不足,就提示缺货
  • 把 100 个用户逐个处理
  • 一直重试,直到成功为止

这类需求都离不开流程控制。

2. if / elif / else 条件判断

条件判断的核心问题是:

  • 如果条件成立,执行什么
  • 如果条件不成立,执行什么

最基础的写法:

python 复制代码
age = 20

if age >= 18:
    print("你已经成年。")

这里:

  • if 表示"如果"
  • age >= 18 是条件表达式
  • 条件为 True 时,缩进代码块会执行

缩进非常重要

Python 不用大括号来表示代码块,而是靠缩进。

例如:

python 复制代码
age = 20

if age >= 18:
    print("成年")
    print("可以继续下一步")

print("这行不在 if 里面")

前两行 printif 代码块里,最后一行不在里面。

if / else

python 复制代码
age = 16

if age >= 18:
    print("允许注册")
else:
    print("未成年,暂不允许注册")

含义是:

  • 条件成立,执行 if
  • 条件不成立,执行 else

if / elif / else

当情况不止两种时,用 elif

python 复制代码
score = 85

if score >= 90:
    print("优秀")
elif score >= 60:
    print("及格")
else:
    print("不及格")

执行顺序要注意:

  • Python 会从上到下依次判断
  • 只要某个分支已经命中,后面的分支就不会再执行

所以顺序很重要。范围大的条件放前面,可能会挡住后面的更精确判断。

错误示例:

python 复制代码
score = 95

if score >= 60:
    print("及格")
elif score >= 90:
    print("优秀")

这里 score = 95 会先命中 score >= 60,导致"优秀"分支永远进不去。

3. 条件表达式的常见写法

条件里最常见的是比较运算和逻辑运算。

例如:

python 复制代码
temperature = 28
is_raining = False

if temperature >= 26 and not is_raining:
    print("适合出门")

这表示:

  • 温度至少 26 度
  • 并且没有下雨

你也可以判断成员是否存在:

python 复制代码
tags = {"python", "ai", "agent"}

if "python" in tags:
    print("包含 python 标签")

4. for 循环

for 用来遍历一个可迭代对象。入门阶段可以先理解成:

  • 把一组数据一个一个拿出来处理

遍历列表

python 复制代码
fruits = ["apple", "banana", "orange"]

for fruit in fruits:
    print(fruit)

执行过程可以理解为:

  • 第一次,fruit"apple"
  • 第二次,fruit"banana"
  • 第三次,fruit"orange"

遍历字符串

python 复制代码
for char in "Python":
    print(char)

字符串也可以一个字符一个字符地遍历。

配合 range()

range() 经常用于"按次数循环":

python 复制代码
for i in range(5):
    print(i)

输出是:

python 复制代码
0
1
2
3
4

要注意:

  • range(5) 不包含 5
  • 它表示从 0 开始,到 5 之前结束

更完整的写法:

python 复制代码
for i in range(1, 6):
    print(i)

这里会输出 15

5. while 循环

while 的意思是:

  • 只要条件为真,就一直执行

例如:

python 复制代码
count = 1

while count <= 3:
    print(count)
    count += 1

这个例子里最重要的一点是:

  • 循环变量必须发生变化

如果你忘了修改 count,就可能写出死循环。

错误示例:

python 复制代码
count = 1

while count <= 3:
    print(count)

这会一直输出 1,因为 count 永远没变。

6. breakcontinuepass 的区别

这三个关键字初学者很容易混在一起,但它们作用完全不同。

break

break 表示立即结束当前循环。

python 复制代码
for number in range(1, 10):
    if number == 5:
        break
    print(number)

输出会是:

python 复制代码
1
2
3
4

因为当 number == 5 时,循环直接结束了。

continue

continue 表示跳过当前这一次,继续下一次循环。

python 复制代码
for number in range(1, 6):
    if number == 3:
        continue
    print(number)

输出是:

python 复制代码
1
2
4
5

因为 3 这一次被跳过了,但循环没有结束。

pass

pass 表示"先占一个位置,暂时什么都不做"。

python 复制代码
if True:
    pass

它最常见的用途是:

  • 你还没写完逻辑
  • 语法上又必须先放一个代码块

7. forwhile 什么时候用

可以先用最朴素的判断标准:

  • 已经知道要循环多少次,或者要遍历一组现成数据:优先 for
  • 不确定循环几次,只知道"条件满足就继续":优先 while

例如:

  • 遍历学生列表:for
  • 重试登录直到成功:while

入门阶段最常见的问题不是"完全不会写",而是明明适合 for,却硬用 while,结果代码又长又容易错。

8. 列表推导式

列表推导式是 Python 里非常常见的一种简洁写法,用来基于已有数据快速生成新列表。

最基础的例子:

python 复制代码
numbers = [1, 2, 3, 4]
squares = [number * number for number in numbers]
print(squares)

你可以先把它翻译成自然语言:

  • numbers 里一个一个拿出 number
  • 把每个 number 平方
  • 把结果组成一个新列表

它等价于更展开的写法:

python 复制代码
numbers = [1, 2, 3, 4]
squares = []

for number in numbers:
    squares.append(number * number)

带条件的列表推导式

python 复制代码
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = [number for number in numbers if number % 2 == 0]

含义是:

  • 遍历 numbers
  • 只保留偶数

入门阶段的建议是:

  • 先会写普通 for
  • 再学列表推导式
  • 如果推导式太长、太绕,就宁可写回普通循环

9. 示例 1:条件判断与循环控制

文件:examples/condition_and_loops_demo.py

python 复制代码
# 条件判断与循环控制示例

temperature = 31
is_raining = False

print("=== 条件判断 ===")
if temperature >= 30 and not is_raining:
    print("天气较热且没下雨,适合去买冷饮。")
elif temperature >= 30 and is_raining:
    print("天气较热但在下雨,出门记得带伞。")
else:
    print("天气不算太热,可以正常安排。")

print("=== for 遍历列表示例 ===")
tasks = ["阅读文档", "运行示例", "做练习"]
for task in tasks:
    print(f"当前任务:{task}")

print("=== for + range 按次数循环 ===")
for step in range(1, 4):
    print(f"第 {step} 步")

print("=== while 循环 ===")
count = 1
while count <= 3:
    print(f"while 第 {count} 次")
    count += 1

print("=== break 与 continue ===")
for number in range(1, 8):
    if number == 2:
        print("遇到 2,跳过这次输出。")
        continue

    if number == 6:
        print("遇到 6,结束循环。")
        break

    print(f"当前数字:{number}")

print("=== pass 示例 ===")
for item in ["A", "B", "C"]:
    if item == "B":
        pass
    print(f"处理项目:{item}")

代码说明

开头的温度判断:

  • if / elif / else 用来表达多分支逻辑
  • 条件里组合了比较运算和逻辑运算
  • 你可以把它理解成"根据不同情况走不同分支"

任务列表遍历:

  • for task in tasks 表示把列表中的元素逐个取出
  • 每一轮循环,task 都会变成当前元素

for step in range(1, 4)

  • 演示按次数循环
  • 这里会输出 1、2、3

while count <= 3

  • 演示基于条件的重复执行
  • count += 1 非常关键,否则循环不会结束

breakcontinue

  • 遇到 2 时跳过当前轮次,但循环继续
  • 遇到 6 时直接终止整个循环

pass 示例:

  • 这里只是演示语法本身
  • 它不做任何事,只是占位

10. 示例 2:列表推导式与流程拆解

文件:examples/comprehension_demo.py

python 复制代码
# 列表推导式与流程拆解示例

scores = [56, 72, 89, 91, 64, 100]

print("=== 普通 for 循环筛选及格分 ===")
passed_scores = []
for score in scores:
    if score >= 60:
        passed_scores.append(score)
print(f"及格分列表:{passed_scores}")

print("=== 列表推导式筛选及格分 ===")
passed_scores_v2 = [score for score in scores if score >= 60]
print(f"及格分列表:{passed_scores_v2}")

print("=== 列表推导式生成等级标签 ===")
grade_labels = ["优秀" if score >= 90 else "合格" for score in scores]
print(f"等级标签:{grade_labels}")

print("=== 流程拆解示例 ===")
for score in scores:
    if score >= 90:
        print(f"{score} 分:优秀")
    elif score >= 60:
        print(f"{score} 分:及格")
    else:
        print(f"{score} 分:不及格")

代码说明

第一段普通 for 循环:

  • 先创建一个空列表 passed_scores
  • 遍历原始成绩列表
  • 如果成绩大于等于 60,就追加到新列表

第二段列表推导式:

  • 用一行表达了和上面相同的逻辑
  • 这是 Python 中很常见的简洁写法

第三段生成等级标签:

  • 结合了条件表达式和列表推导式
  • 给每个成绩生成一个对应标签

最后一段流程拆解:

  • 演示如何把"成绩分类规则"翻译成清晰的多分支结构
  • 这是从自然语言走向代码的重要练习方式

11. 怎么把自然语言翻译成代码流程

这是流程控制真正的核心能力。

例如需求是:

"遍历一组成绩。90 分及以上输出优秀,60 分及以上输出及格,否则输出不及格。"

可以拆成三步:

  1. 先把所有成绩一个一个拿出来
  2. 对每个成绩做条件判断
  3. 根据不同结果输出不同内容

对应代码就是:

python 复制代码
for score in scores:
    if score >= 90:
        print("优秀")
    elif score >= 60:
        print("及格")
    else:
        print("不及格")

入门阶段建议你养成这个习惯:

  • 先写中文步骤
  • 再写伪代码
  • 最后再写正式 Python 代码

这样会比直接盯着空白编辑器硬写稳很多。

12. 常见错误

缩进错误

Python 对缩进非常敏感。下面这种就会有问题:

python 复制代码
if True:
print("hello")

if 下面的代码块必须正确缩进。

条件顺序写错

python 复制代码
score = 95

if score >= 60:
    print("及格")
elif score >= 90:
    print("优秀")

这里顺序错误,会导致高分先被较宽的条件吃掉。

while 忘记更新变量

python 复制代码
count = 1

while count <= 3:
    print(count)

这会导致死循环。

混淆 breakcontinue

  • break:结束整个循环
  • continue:跳过当前这一次,继续下一次

13. 本章总结

这一章你要真正掌握的是:

  • 条件判断是在不同情况之间做分支选择
  • for 适合遍历一组现成数据
  • while 适合"条件满足就持续执行"的场景
  • breakcontinuepass 各自含义不同
  • 列表推导式本质上是对普通循环的简洁表达
  • 好的流程控制代码不是"写出来了",而是别人也能顺着逻辑读懂

如果这些内容已经顺手,下一章进入函数与模块化时,你就能开始把"会写流程"升级成"会组织代码结构"。

相关推荐
阿祖zu1 小时前
优雅写作:开源两个我的文章写作 Skill
程序员·openai·agent
甲维斯2 小时前
GLM5.2+ZCode复刻坦克大战,自测50万帧!
前端·ai编程·游戏开发
RyzenAdorer2 小时前
主流 AI 编程助手的记忆系统实现方案
ai编程
呱呱复呱呱4 小时前
Django CBV 源码解读:一个请求是怎么找到你的 get() 方法的
python·django
ZJPRENO4 小时前
Claude CLI命令功能说明
ai编程
其实是白羊4 小时前
CoderTools 1.5.3:让 AI 帮你看懂代码调用链路
后端·ai编程·vibecoding
leeyi5 小时前
Deer-Go:字节 Deer-Flow 的 Go 移植,深度研究 Agent 全拆解
go·aigc·agent
米小虾6 小时前
Agent Skill 设计模式完全指南
人工智能·agent
米小虾7 小时前
Agent Skill 规范与 Skill-Creator 核心思想
人工智能·agent