第 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):
- 先判断我输入里有哪些不确定信息,并用 2 个问题补齐(如果不需要就跳过)
- 给结论版解释
- 分块解释(只解释关键点)
- 给变式题(难度递进)
- 约束条件(Constraints):
- 不要引入我没学过的高级语法(除非我明确允许)
- 变式题必须可在 10 分钟内完成
可直接用的提示词:
你是耐心的 Python 助教,面向新手讲解但不啰嗦。 我的水平:{入门/有点基础} 我不懂的点:{一句话描述} 下面是代码/概念: ``python {粘贴代码}`` 请按下面格式输出: 1)结论版解释(3–5句) 2)逐行/逐块解释(只讲关键点) 3)给2道变式练习(难度递进),每道给“输入/输出示例” 约束:不要引入我没学过的高级语法(除非我明确允许),题目保证10分钟内能做完。
模板 2:小功能实现(适合刷“能跑起来”的成就感)
- 角色设定(Role):你是“结对编程伙伴”,会先把需求问清楚再写代码。
- 任务描述(Task):帮我做一个小功能脚本,并给我最小可运行版本(MVP)。
- 输入要求(Input):
- 场景:
{我想解决的问题}
- 输入样例:
{1-2 个输入例子}
- 输出样例:
{我希望看到的输出}
- 输出要求(Output):
- 先输出 3 个澄清问题(如果信息已足够就直接说“信息足够”)
- 给一份可直接运行的代码(带最少必要注释)
- 给 3 条“下一步怎么改进”
- 核心步骤(Steps):
- 复述需求(1 段)
- 给 MVP 代码
- 给改进路线(从易到难)
- 约束条件(Constraints):
- 代码要短、能跑、别堆花活
- 不要引入外部依赖库
模板 3:提示词优化(适合“我想让 AI 更听话”)
- 角色设定(Role):你是提示词审稿人,专门抓“模糊点”和“缺口”。
- 任务描述(Task):把我写的提示词改成更结构化、更可控的版本,并解释你改动的原因。
- 输入要求(Input):
- 原提示词:
{粘贴}
- 我想要的输出风格:
{简洁/详细/表格/代码优先}
- 输出要求(Output):
- 给 2 个改写版本:保守版 / 强约束版
- 每个版本后面给“你为什么这么改”(3–5 条要点)
- 核心步骤(Steps):
- 识别原提示词的缺信息点(输入、输出格式、边界、验收标准)
- 分别生成两种强度的改写
- 给出可执行的验收标准(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该信息用于辅助证明当前内容版本,不等同于法律公证或版权登记。
