4.3 解决代码问题场景
引言
代码出错了,问 AI「帮我看看」,AI 只能给出泛泛的建议。
要得到精准的修复方案,需要说清楚:语言、错误、代码、期望。
🐛 场景:调试代码错误
❌ 烂 Prompt
我的代码报错了,帮我看看问题:
- ❌ 没说什么语言
- ❌ 没说什么错误
- ❌ 没贴代码
- ❌ 没说期望什么输出
AI 输出效果:AI 只能回复「请提供更多信息」,或者给出一堆可能的原因,无法精准定位问题。
✅ 好 Prompt
markdown
我在用 Python 写一个爬虫,运行时报了以下错误:
TypeError: 'NoneType' object is not subscriptable
这是出问题的代码片段:
```python
data = response.json()
title = data['result']['title']
```
请帮我:
1. 解释这个错误是什么意思
2. 找出代码的问题在哪
3. 给出修复后的代码
4. 说明如何避免这类问题AI 输出效果:
1. 错误解释:data['result'] 返回了 None,然后对 None 用 ['title'] 取值就报错了。
2. 问题定位:response.json() 返回的数据中没有 result 字段,可能是请求失败或接口返回格式变化。
3. 修复代码:
python
data = response.json()
result = data.get('result')
if result is not None:
title = result.get('title', '默认标题')
else:
title = '未获取到标题'
print(f"接口返回异常:{data}")4. 预防建议:访问嵌套字典时始终使用 .get() 方法并提供默认值,避免直接下标访问。
改进点:
| 改进 | ❌ 烂 Prompt | ✅ 好 Prompt |
|---|---|---|
| 语言 | 未说明 | Python |
| 场景 | 未提供 | 写爬虫 |
| 错误信息 | 未给出 | TypeError... |
| 代码片段 | 未贴出 | 贴出具体代码 |
| 期望输出 | 未指定 | 解释 + 找问题 + 修复 + 预防 |
💻 场景:写新代码
❌ 烂 Prompt
帮我写一个排序函数问题:
- ❌ 没说什么语言
- ❌ 没说排序对象和规则
- ❌ 没说输入输出格式
- ❌ 没说代码规范要求
AI 输出效果:一个通用但可能不符合你需求的排序函数,缺少注释、参数说明和使用示例。
✅ 好 Prompt
markdown
语言:Python
任务:写一个函数,对列表按多个字段排序
输入数据格式:
```python
products = [
{'name': '苹果', 'price': 5, 'sales': 100},
{'name': '香蕉', 'price': 3, 'sales': 200},
{'name': '橙子', 'price': 4, 'sales': 150},
]
```
要求:
- 先按销量降序,再按价格升序
- 返回排序后的列表
- 函数名:sort_products
- 包含参数说明和返回值说明的注释
请给出完整代码和使用示例。AI 输出效果:
python
def sort_products(products: list[dict]) -> list[dict]:
"""对商品列表按多个字段排序。
Args:
products: 商品列表,每个元素为包含 name、price、sales 的字典
Returns:
排序后的商品列表(先按销量降序,再按价格升序)
"""
return sorted(products, key=lambda x: (-x['sales'], x['price']))
# 使用示例
products = [
{'name': '苹果', 'price': 5, 'sales': 100},
{'name': '香蕉', 'price': 3, 'sales': 200},
{'name': '橙子', 'price': 4, 'sales': 150},
]
result = sort_products(products)
for p in result:
print(f"{p['name']} - 销量:{p['sales']}, 价格:{p['price']}")
# 输出:香蕉 - 销量:200, 价格:3 → 橙子 - 销量:150, 价格:4 → 苹果 - 销量:100, 价格:5改进点:
| 改进 | ❌ 烂 Prompt | ✅ 好 Prompt |
|---|---|---|
| 语言 | 未说明 | Python |
| 排序对象 | 未说明 | 商品字典列表 |
| 排序规则 | 未定义 | 销量降序 + 价格升序 |
| 输入格式 | 未提供 | 贴出数据示例 |
| 代码规范 | 未要求 | 函数命名 + 类型注解 + 注释 |
⚡ 场景:代码优化
❌ 烂 Prompt
这段代码效率太低,帮我优化一下问题:
- ❌ 没贴代码
- ❌ 没说性能瓶颈在哪
- ❌ 没说优化目标
- ❌ 没约束不改变输出结果
AI 输出效果:AI 无从下手,只能给出泛泛的优化建议,无法提供具体方案。
✅ 好 Prompt
markdown
你是一位 Python 性能优化专家。
代码:
```python
result = []
for i in range(1000000):
if i % 2 == 0:
result.append(i * 2)
```
请分析并优化:
1. 当前代码的性能瓶颈是什么?
2. 优化后的代码(用代码块展示)
3. 优化原理说明
4. 性能提升预估
约束:不要改变代码的输出结果。AI 输出效果:
1. 性能瓶颈:循环中使用 append 逐次扩容列表,且 if 判断在每次循环中都执行。
2. 优化代码:
python
result = [i * 2 for i in range(0, 1000000, 2)]3. 优化原理:
- 列表推导式比循环
append快约 30%,因为底层预分配了内存 - 步长为 2 直接跳过奇数,省去了
if i % 2 == 0的判断
4. 性能提升:约 1.5-2 倍加速(实测约 80ms → 45ms)
改进点:
| 改进 | ❌ 烂 Prompt | ✅ 好 Prompt |
|---|---|---|
| 角色 | 未设定 | Python 性能优化专家 |
| 代码 | 未贴出 | 贴出具体代码 |
| 要求 | 未明确 | 分析瓶颈 + 优化代码 + 原理 + 预估 |
| 约束 | 未说明 | 不改变输出结果 |
📌 本节核心要点
代码类 Prompt 的关键要素:
- ✅ 语言 — Python、JavaScript、Go...
- ✅ 场景 — 爬虫、Web、数据分析...
- ✅ 错误信息 — 具体的报错内容
- ✅ 代码片段 — 贴出相关代码
- ✅ 期望输出 — 解释、修复、优化、示例
练习
将以下烂 Prompt 改成好 Prompt:
- 「代码跑不通,帮我改」
- 「写一个函数」
- 「这段代码有问题」
下一节
下一个场景:做决策分析。