一、为什么要学调试?一句话说明白
写程序 = 搭积木;调试 = 找积木里哪块放歪了。
学会调试,你就能把“报错”翻译成“解决方案”,而不是“玄学”。
二、常用的 4 大调试工具(附代码示例)
工具 | 说明 | 何时用 | 编程狮示例 |
---|---|---|---|
Traceback(报错堆栈) | 错误 GPS,告诉你哪行炸了 | 运行直接报错 | 见下方【实战 1】 |
print() 打印 |
在代码里插“监控摄像头” | 变量值看不见 | 见下方【实战 2】 |
断点 breakpoint() | 让程序暂停,逐行体检 | 逻辑复杂不知哪一步出错 | 见下方【实战 3】 |
单元测试 | 写“小考题”防止旧病复发 | 改代码后担心崩 | 见下方【实战 4】 |
三、实战 1:3 步看懂 Traceback(以 NameError 为例)
在 编程狮在线Python3编辑器 输入:
print(猫咪) # 故意写错:变量未定义
运行后得到:
Traceback (most recent call last):
File "/tmp/cat.py", line 1, in <module>
print(猫咪)
NameError: name '猫咪' is not defined
逐行翻译:
- File "/tmp/cat.py", line 1 → 第 1 行出错
- NameError → 错误类型:名字未声明
- name '猫咪' is not defined → 解释器找不到“猫咪”是谁
修复:猫咪 = "橘猫" print(猫咪) # 输出:橘猫
四、实战 2:用 print()
追踪变量
需求:统计一段中文文本里有多少个“快乐”。
text = "我今天很快乐!因为学习编程很快乐~"
words = text.split(",") # 错误:按逗号切,会把句子切碎
print("调试:当前 words 列表 =", words) # 插监控
count = 0
for w in words:
count += w.count("快乐")
print("调试:最终 count =", count)
通过打印发现 words
切错,修复:
words = text.replace("!", "").replace("~", "").split() # 更稳妥
五、实战 3:一行代码加断点,像看电影一样慢放程序
在 编程狮在线Python3编辑器 或 Trae 里,给可疑行加:
breakpoint() # Python 3.7+ 内置
示例(文件 fruit.py
):
def 首字母大写(水果们):
结果 = []
for f in 水果们:
breakpoint() # 程序会在这里停
结果.append(f.capitalize())
return 结果
print(首字母大写(["apple", "banana", 123]))
运行后进入交互模式,输入:
p f
查看当前变量c
继续运行
这样就能发现123
不是字符串导致崩溃。
六、实战 4:写单元测试,让 bug 永不复现
在 编程狮在线Python3编辑器 输入:
from fruit import 首字母大写
def test_正常字符串():
assert 首字母大写(["apple"]) == ["Apple"]
def test_数字会被跳过():
assert 首字母大写(["apple", 123]) == ["Apple", ""]
if __name__ == "__main__":
test_正常字符串()
test_数字会被跳过()
print("✅ 全部测试通过!")
运行后若断言失败,会精准提示哪条测试挂了,引导你修复源码。
七、高频报错对照表(收藏版)
英文报错 | 中文翻译 | 最常见原因 | 1 行修复示例 |
---|---|---|---|
SyntaxError: invalid syntax |
语法错误 | 少冒号/括号 | if x == 1: |
IndentationError |
缩进错误 | Tab 与空格混用 | 统一用 4 空格 |
TypeError: can only concatenate str (not "int") to str |
类型错误 | 字符串+数字 | str(num) + "岁" |
ModuleNotFoundError |
模块不存在 | 没装库 | pip install 包名 |
八、3 分钟速通调试流程图
graph TD
A[运行报错] --> B{看 Traceback}
B -->|定位行号| C[加 print/breakpoint]
C --> D[修改变量/逻辑]
D --> E[写测试防复发]
E --> F[提交代码]
点击查看Mermaid流程图
九、课程推荐
想要系统学习Python请点击《Python零基础到高薪就业》