第 2 章 2.7 应用实践参考答案

第 2 章 2.7 应用实践参考答案

说明:这份参考答案的重点不是“背代码”,而是把本章讲的提示工程思路真正用起来:结构化提示、明确输入输出、分步推进、迭代优化、以及对 AI 输出的验证意识。

2.7.1 设计个性化 Python 学习提示词库(参考答案)

题目回顾(用大白话说)

你要做一套“可复用的提示词模板库”,至少 5 个模板。每个模板都要写清楚:你让 AI 扮演谁、要干什么、你会给什么输入、你希望它输出什么格式、它应该按什么步骤做、以及哪些事别做。

参考答案:5 个结构化提示词模板(可直接复制使用)

下面每个模板都按同一套结构写,你只要替换花括号里的内容就行。

模板 1:代码讲解 + 举一反三(适合新概念刚入门)

  • 角色设定(Role):你是耐心的 Python 助教,面向新手讲解,但不啰嗦。
  • 任务描述(Task):解释我贴的代码/概念,并给我 2 个“变式练习”。
  • 输入要求(Input)
  • 我的水平:{入门/有点基础}
  • 我不懂的点:{一句话描述}
  • 代码或概念:{粘贴代码或关键概念}
  • 输出要求(Output)
  • 先给“结论版解释”(3–5 句)
  • 再给“逐行/逐块解释”(尽量贴近代码结构)
  • 给 2 道变式题 + 标准输出示例
  • 核心步骤(Steps)
  1. 先判断我输入里有哪些不确定信息,并用 2 个问题补齐(如果不需要就跳过)
  1. 给结论版解释
  1. 分块解释(只解释关键点)
  1. 给变式题(难度递进)
  • 约束条件(Constraints)
  • 不要引入我没学过的高级语法(除非我明确允许)
  • 变式题必须可在 10 分钟内完成
可直接用的提示词:
你是耐心的 Python 助教,面向新手讲解但不啰嗦。 我的水平:{入门/有点基础} 我不懂的点:{一句话描述} 下面是代码/概念: ``python {粘贴代码} `` 请按下面格式输出: 1)结论版解释(3–5句) 2)逐行/逐块解释(只讲关键点) 3)给2道变式练习(难度递进),每道给“输入/输出示例” 约束:不要引入我没学过的高级语法(除非我明确允许),题目保证10分钟内能做完。

模板 2:小功能实现(适合刷“能跑起来”的成就感)

  • 角色设定(Role):你是“结对编程伙伴”,会先把需求问清楚再写代码。
  • 任务描述(Task):帮我做一个小功能脚本,并给我最小可运行版本(MVP)。
  • 输入要求(Input)
  • 场景:{我想解决的问题}
  • 输入样例:{1-2 个输入例子}
  • 输出样例:{我希望看到的输出}
  • 输出要求(Output)
  • 先输出 3 个澄清问题(如果信息已足够就直接说“信息足够”)
  • 给一份可直接运行的代码(带最少必要注释)
  • 给 3 条“下一步怎么改进”
  • 核心步骤(Steps)
  1. 复述需求(1 段)
  1. 给 MVP 代码
  1. 给改进路线(从易到难)
  • 约束条件(Constraints)
  • 代码要短、能跑、别堆花活
  • 不要引入外部依赖库

模板 3:提示词优化(适合“我想让 AI 更听话”)

  • 角色设定(Role):你是提示词审稿人,专门抓“模糊点”和“缺口”。
  • 任务描述(Task):把我写的提示词改成更结构化、更可控的版本,并解释你改动的原因。
  • 输入要求(Input)
  • 原提示词:{粘贴}
  • 我想要的输出风格:{简洁/详细/表格/代码优先}
  • 输出要求(Output)
  • 给 2 个改写版本:保守版 / 强约束版
  • 每个版本后面给“你为什么这么改”(3–5 条要点)
  • 核心步骤(Steps)
  1. 识别原提示词的缺信息点(输入、输出格式、边界、验收标准)
  1. 分别生成两种强度的改写
  1. 给出可执行的验收标准(Checklist)
  • 约束条件(Constraints)
  • 不要把提示词改得太长到不可用

模板 4:代码审查 + 反问式改进(适合养成验证习惯)

  • 角色设定(Role):你是严格但友好的 code reviewer。
  • 任务描述(Task):审查我贴的代码,指出 bug 风险、边界情况、可读性问题,并给一个改进版。
  • 输入要求(Input)
  • 代码:{粘贴}
  • 期望功能:{一句话}
  • 允许修改范围:{只改函数内部/可以重构/可以拆函数}
  • 输出要求(Output)
  • 列出问题清单(按严重程度排序)
  • 给改进版代码
  • 给一组“手动测试用例”(3–6 个)
  • 约束条件(Constraints)
  • 不要引入复杂框架
  • 解释要短,重点放在可执行的改进

模板 5:学习路径微规划(适合“我不知道下一步学啥”)

  • 角色设定(Role):你是课程教练,目标是让我稳步推进,不走弯路。
  • 任务描述(Task):基于我当前情况,给一个 7 天微计划,并配 1 个小项目贯穿。
  • 输入要求(Input)
  • 我每天可学习时间:{分钟}
  • 当前基础:{会/不会}
  • 目标:{我想做什么}
  • 输出要求(Output)
  • 7 天游程(每天:目标、任务、验收标准)
  • 贯穿小项目:拆成 5 个里程碑
  • 约束条件(Constraints)
  • 每天任务不超过 45 分钟(除非我说可以更多)

测试记录(示例)

你真正交作业时,不用把 AI 的长输出全贴出来,抓重点就行:你怎么提示的 + 输出有没有达标 + 你怎么改的
示例 1(用模板 3 优化提示词)
  • 原提示词: “帮我写个排序函数”
  • 改成强约束版后:补了输入数据形状、稳定性要求、是否允许原地修改、输出格式(函数签名 + 测试样例)。
  • 效果变化:输出从“随便写个冒泡”变成“直接用 sorted + 可测试 + 不改原列表”,可用性明显提升。
示例 2(用模板 2 做小功能)
  • 我的输入:给了 2 组输入输出例子(等价于把验收标准说清楚)。
  • 效果变化:AI 基本不会跑偏,而且你后续要扩展功能也更顺。

与本章知识点的对应关系

  • 结构化提示:Role / Task / Input / Output / Steps / Constraints 让 AI 输出更可控。
  • 明确验收标准:用输入输出样例、Checklist 让“好坏”可判断。
  • 迭代优化:先跑 MVP,再逐步加约束和边界条件。

2.7.2 构建渐进式 AI 协同学习案例(参考答案)

题目回顾(用大白话说)

选一个小项目,和 AI 做至少 5 轮对话:每一轮都要比上一轮更具体,最后拼成一个能跑的程序。

参考答案:案例选题——“学习进度追踪器(命令行版)”

这个项目很适合做“渐进式对话”,因为需求天然可以一层层加:先能记一条记录,再能查看,再能统计,再能做输入校验。

第 1 轮:确定目标和边界(先别急着写代码)

用户提示:
你是我的结对编程伙伴。我要做一个命令行 Python 小工具:记录我每天学了什么、学了多久。先给我功能列表 + 最小可运行版本(MVP)的范围,不要直接甩一大坨代码。
AI 期望输出(摘要):
  • MVP:添加记录、查看记录、退出
  • 数据结构:列表,元素是字典/元组
  • 交互:循环菜单

第 2 轮:数据结构 + 输入输出格式(把“记录长什么样”说死)

用户提示:
记录用 list 存,单条记录用 dict,字段固定为:date(YYYY-MM-DD)、topic、minutes(整数)。请给我数据结构示例 + 菜单文案。
AI 期望输出(摘要):
  • 给出记录样例
  • 菜单:1 添加 2 查看 3 统计 0 退出

第 3 轮:实现交互主流程(先跑起来)

用户提示:
写 MVP:能添加一条记录、能打印全部记录。要求:输出用 f-string 对齐;输入不合法就提示重输(先简单做)。
AI 期望输出(摘要):
  • while 循环菜单
  • 添加记录:读取输入、做最基本校验
  • 查看:表格打印

第 4 轮:错误处理 + 功能优化(让它更“像个工具”)

用户提示:
加 2 个点:1)minutes 必须是正整数;2)统计总学习分钟数,并按 topic 汇总。输出还是表格。
AI 期望输出(摘要):
  • 输入校验函数
  • 统计:总分钟数、按 topic 累加

第 5 轮:整合 + 自测(把“验收标准”补齐)

用户提示:
请把代码整理成一个文件,给我 6 个手动测试用例(包含非法输入),确保每个菜单路径都能跑通。
AI 期望输出(摘要):
  • 单文件可运行脚本
  • 手动测试清单

最终整合代码(可运行)

与本章知识点的对应关系

  • 渐进式对话策略:先目标,再数据结构,再 MVP,再错误处理,再整合测试。
  • 输入输出要求明确:固定数据结构、固定表格输出,减少 AI 发散。
  • 批判性验证:手动测试用例是最简单也最有效的“验收标准”。
一句话提示(可选):如果你想把记录保存到文件,可以参考第 7 章第 7.1 节 文件操作基础(这里不展开)。

2.7.3 提示词效果对比分析(参考答案)

题目回顾(用大白话说)

同一个编程任务,用 4 种提示风格去问同一个模型,然后从“正确性、可读性、实用性”对比效果。

统一的编程任务(别让对比失真)

写一个函数 sort_records(records, key, reverse=False): - records 是“字典列表”,例如 [{ 'name': 'Alice', 'score': 92 }, ...] - 返回 新的列表(不修改原列表) - 能按 key 对应字段排序,reverse=True 时降序 - 若字段缺失要给出清晰报错信息(别默默吞掉)

四种提示词(示例)

1)零样本(Zero-shot)

帮我写一个 Python 排序函数,能按字段排序。

2)少样本(Few-shot)

写函数 sort_records(records, key, reverse=False)。 输入示例: records = [{'name':'A','score':90},{'name':'B','score':80}]key='score' → 输出按 score 升序。 再给一个 reverse=True 的例子。 代码要可运行,顺便给 2 个测试用例。

3)指令式(Instruction)

你是严格的 Python code reviewer。请实现 sort_records(records, key, reverse=False),要求: - 不修改原列表 - 字段缺失时抛 KeyError,信息包含缺失字段名 - 返回新列表 - 给出 4 个测试用例(包含异常用例) - 代码尽量短,不引入第三方库

4)对话式(Conversational,多轮澄清)

我想实现 sort_records,先别写代码。你先问我 3 个你觉得必须问清楚的问题(例如:字段缺失怎么处理、是否允许混合类型、是否需要稳定排序)。我回答后你再写最终代码。

参考实现(用于对比的“标准答案”样例)

对比分析(参考结论)

提示风格
代码正确性
可读性
实用性
典型现象
零样本
中等(容易漏边界)
中等
一般
往往只写核心排序,不写验证与异常
少样本
较高
较高
较好
因为有 I/O 例子,输出更贴近验收标准
指令式
较高
最容易得到“可交付”的版本:异常、测试、约束更完整
对话式
取决于你回答质量
先把关键不确定点说清,后续输出更稳、更贴合真实需求

与本章知识点的对应关系

  • 提示策略对输出质量的影响:示例越具体,模型越不容易“自作主张”。
  • 结构化与约束:指令式/对话式更容易把“验收标准”写进提示里。
  • 批判性思维:你要习惯把“边界条件、错误处理、测试用例”当作提示的一部分,而不是写完再补。
一句话提示(可选):如果你希望把这种对比实验做得更“工程化”,可以参考第 8 章第 8.4 节 测试驱动的 AI 开发(这里不展开)。
原创存证 · 本地哈希 · 9e17f1d6e9d7...
算法:SHA-256
时间:2026-02-24
哈希:9e17f1d6e9d74a946b48289b783b42734e0f8da1d448042154f5c00348627b71

该信息用于辅助证明当前内容版本,不等同于法律公证或版权登记。

第12章 WorkBuddy 版提示词优化对照表 📚Web 爬虫
Loading...