分支让程序做决定,循环让程序重复做事;函数给逻辑起名字。 本周还引出一个贯穿全课程的思维:好的函数契约 = 好的 prompt。
| 时间 | 环节 | 要点 |
|---|---|---|
| 0–8 | 导入 | 上周取了数据——只想看 token>100 的记录怎么办?需要「条件判断」 |
| 8–20 | 分支 | if/elif/else;and/or 组合;缩进即代码块 |
| 20–32 | 循环 | for/range 三用法;while 多轮对话;break vs continue |
| 32–42 | 两大杀手 | off-by-one(range(5) 是 0–4)与死循环(Ctrl+C)现场演示 |
| 42–55 | 动手练习 | 运行场:筛选 token>200 + 按模型分组统计 + 找最大 |
| 55–68 | 函数语法 | def/参数/返回值/docstring;默认值;*args **kwargs 认得出 |
| 68–80 | 契约四要素 | 名字/参数/返回值/示例——好的契约=好的 prompt |
| 80–92 | 动手练习 | 运行场:补全 top_questions 函数(TODO 版) |
| 92–100 | lambda + 小测 | max(logs, key=lambda...);随堂小测 3 题 |
两个运行场练习是本课核心——写完当堂运行验证。
# 按 token 消耗分级——来自真实的 API 日志场景
for log in api_logs:
if log["tokens"] < 50:
level = "轻量"
elif log["tokens"] <= 200:
level = "正常"
else:
level = "高消耗"
# 组合条件:高消耗 且 调用失败
if log["tokens"] > 200 and not log["ok"]:
print("⚠ 需要排查:", log)
and / or / not 组合条件;elif 链代替其他语言的 switch# for:遍历已知集合
for i in range(5):
print(i) # 0 1 2 3 4
# while:满足条件就一直做
while True:
q = input("你:")
if q == "退出":
break # 跳出整个循环
reply(q)
range(5) 是 0–4,不是 1–5break / 条件永真 → Ctrl+C 终止def estimate_cost(tokens: int, price: float = 0.001) -> float:
"""估算一次 API 调用的费用(元)。
>>> estimate_cost(730)
0.73
"""
return tokens * price / 1000
cost = estimate_cost(730) # 位置参数
cost = estimate_cost(tokens=730) # 关键字参数
*args / **kwargs 收集任意数量参数——读 AI 代码必备lambda:一行匿名函数,常当 key 用:max(logs, key=lambda l: l["tokens"])count_words 而不是 func1——名字即文档,AI 也靠名字理解代码。text: str, topk: int = 3深入阅读:M2 模块页 · 经典笔记 5.3 循环 · 5.4 函数