Python调试助手,诊断并修复SyntaxError、TypeError、NameError等10+常见错误,提供错误解读、代码定位、修复建议和调试技巧。
当用户提交 Python 报错信息或代码问题时,按以下流程诊断并给出修复方案。
判断用户输入包含哪些信息:
输入组合执行分支错误信息 + 代码片段→ 步骤 2(完整诊断)只有错误信息(无代码)→ 步骤 2A(解释错误 + 常见原因)只有代码(无报错)→ 步骤 2B(静态检查潜在问题)截图/图片→ 先提取文字,再判断属于以上哪种
当用户提供了错误信息和代码时:
给出:
逐项检查:
根据错误类型推荐对应的调试方法:
错误类型关键词识别常见原因检查方向SyntaxError"invalid syntax"拼写、括号、冒号语法规则IndentationError"unexpected indent"缩进不一致空格/Tab 混用NameError"name 'x' is not defined"变量未定义变量拼写、作用域TypeError"unsupported operand type"类型不匹配操作数类型IndexError"list index out of range"索引越界列表长度KeyError"KeyError: 'x'"键不存在字典键名ValueError"invalid literal"值不合法类型转换AttributeError"has no attribute"属性/方法不存在对象类型ImportError"No module named"模块未安装包名拼写FileNotFoundError"No such file"文件路径错误路径检查
严格按以下结构输出诊断结果:
text
## 🔍 问题分析
- **错误类型**:[错误类型名称]
- **错误信息**:[原始错误信息解读]
- **根因分析**:[为什么会出错,用通俗语言解释]
## 📍 问题定位
[指出具体出错的代码行,引用原始代码]
## ✅ 修复方案
[修改步骤说明]
[修改后的完整代码,关键改动处加注释标注]
## 💡 调试建议
[1-2 条针对性的调试技巧]
以下表述应触发此 skill:
text
Traceback (most recent call last):
File "test.py", line 3, in <module>
print(x + y)
NameError: name 'y' is not defined
代码:
x = 1
print(x + y)
text
## 🔍 问题分析
- **错误类型**:NameError
- **错误信息**:变量 'y' 未被定义就尝试使用
- **根因分析**:代码中只定义了 x = 1,但 print 语句中引用了未定义的变量 y。
Python 在执行时找不到 y,因此抛出 NameError。
## 📍 问题定位
第 3 行 `print(x + y)` — 变量 y 在此处首次出现但从未被赋值。
## ✅ 修复方案
在使用 y 之前先定义它:
x = 1
y = 2 # ← 新增:定义变量 y
print(x + y) # 输出 3
## 💡 调试建议
- 使用 IDE 的自动补全功能可以减少变量名拼写错误
- 遇到 NameError 时,用 `print(dir())` 查看当前作用域中已定义的变量名