系列:Python 从零开始 · 番外篇 这一课:把最常见的报错一个个翻译成人话,附真实例子
新手最怕红色报错。其实报错是 Python 在帮你——它会准确告诉你错在哪、为什么错。学会读报错,等于请了个 24 小时在线的老师。这篇把最常见的报错一次讲透,每个都配真实例子。
先学会读报错:从下往上看
>>> print("hello"
File "<stdin>", line 1
print("hello"
^
SyntaxError: '(' was never closed
读法:先看最后一行——SyntaxError 是错误类型(语法错误),冒号后面是人话解释(括号没闭合)。^ 小箭头指着它觉得有问题的位置。line 1 告诉你第几行。
记住:最后一行是结论,上面是案发现场。
一、SyntaxError:语法错误
人话:代码写得不合语法,Python 看不懂。
>>> print(“你好”)
SyntaxError: invalid character '“'
真实例子:中文引号。手机备忘录粘贴最容易中招,输入法自动把英文引号换成中文引号。
怎么修:检查引号、括号是不是英文的,括号有没有配对。
二、IndentationError:缩进错误
人话:缩进乱了,Python 分不清谁是谁的。
for s in nums:
if s % 2 == 0: # 应该缩进 4 格
print(s)
IndentationError: expected an indented block——“我期待一个缩进的代码块,你没给。”
怎么修:for、if、def、while 冒号下面的代码,行首统一 4 个空格。
三、NameError:名字没定义
人话:你用的这个名字,Python 没见过。
>>> print(香蕉)
NameError: name '香蕉' is not defined
两种情况:1)忘了加引号,“香蕉”被当成变量名;2)先用后定义,比如 evens.append(s) 之前没写 evens = []。
怎么修:检查拼写,检查是不是忘了加引号,检查变量是不是先定义后使用。
四、TypeError:类型不对
人话:这个操作不能用在这两种类型上。
>>> "3" + 1
TypeError: can only concatenate str (not "int") to str
人话翻译:“字符串只能跟字符串拼接,不能跟整数拼。”
真实例子:input() 返回的是字符串,直接拿去做数学运算就会报这个。怎么修:先转换类型,int(age) + 1。
五、ValueError:值不对
人话:类型对了,但值不合法。
>>> int("abc")
ValueError: invalid literal for int() with base 10: 'abc'
TypeError vs ValueError 怎么分:int("abc") 是 ValueError(类型对,值不行);"3" + 1 是 TypeError(操作本身就不允许)。
六、IndexError:索引越界
人话:列表就这么长,你要的位置不存在。
>>> fruits = ["苹果", "香蕉"]
>>> fruits[5]
IndexError: list index out of range
怎么修:记住从 0 开始数,len(fruits) 看长度。
七、KeyError:字典里没这个键
>>> d = {"名": "Chris"}
>>> d["年龄"]
KeyError: '年龄'
怎么修:检查键名拼写,或用 d.get("年龄")——键不存在时返回 None 而不是报错。
八、AttributeError:点后面没这个东西
>>> "hello".append("x")
AttributeError: 'str' object has no attribute 'append'
人话翻译:“字符串没有 append 这个东西——那是列表的方法。”怎么修:dir(这个东西) 看看它到底有什么。
九、ModuleNotFoundError:模块找不到
>>> import requests
ModuleNotFoundError: No module named 'requests'
怎么修:第三方库先 pip install requests 再 import;自己写的模块检查文件名和当前目录。
十、ZeroDivisionError:除以零
>>> 1 / 0
ZeroDivisionError: division by zero
怎么修:除法前检查除数 if b != 0。
十一、FileNotFoundError:文件不存在
>>> open("不存在.txt")
FileNotFoundError: [Errno 2] No such file or directory
怎么修:检查文件名拼写和路径,ls 看看文件到底在不在当前目录。
报错速查表
SyntaxError:语法写错了,第一反应查引号括号
IndentationError:缩进乱了,对齐 4 格
NameError:名字没见过,查拼写/引号/定义顺序
TypeError:类型不配,查 type()
ValueError:值不合法,查要转的值
IndexError:索引越界,查 len()
KeyError:字典没这个键,查键名拼写
AttributeError:点后面没这东西,dir() 看看有啥
ModuleNotFoundError:模块找不到,pip install 或查文件名
ZeroDivisionError:除以零,检查除数
FileNotFoundError:文件不存在,ls 看看
最后的心态
报错是好事:不报错的 bug(逻辑错了但能跑)才可怕,找都找不到
复制最后一行去搜:全世界的初学者都踩过同样的坑,答案现成
一次只修一个:改完再跑,别一次改三处
系列导航:P1 写下你的第一行代码 · P2 变量、数据类型与字符串 Root 日记 · Python 系列番外 · 2026-10-14