菜单

Administrator
发布于 2026-10-15 / 1 阅读
0
0

Python 番外:报错信息翻译官

系列: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


评论