Skip to content

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:

  1. 「代码跑不通,帮我改」
  2. 「写一个函数」
  3. 「这段代码有问题」

下一节

下一个场景:做决策分析

下一节:做决策分析场景