人人都能学编程
English 开始学习
课程 2 · Python 入门第 2 课 / 共 14 课免费阅读

读懂报错 · Python 从零开始

Python 说出错了,该怎么办?

课程目录

为什么需要它

每个程序员每天都会遇到报错,这并不说明你学不好。报错信息 Error message 是一条线索,告诉你在哪里、出了什么问题。学会冷静地读它,比任何别的技巧都省时间。

直觉理解

报错就像导航说「第 3 个路口走错了」。要读三样东西:

  1. 行号:Python 在哪一行发现了问题(这个网站会把那一行标红)。
  2. 类型:是哪一类问题。
  3. 说明:具体细节。

最常见的几类:

类型意思
SyntaxError 语法错误语法不对:少了括号、引号或冒号。整个程序一行都不会运行。
NameError 名字错误用了 Python 不认识的名字:拼写错误,或者文字没加引号。
TypeError 类型错误把不能放在一起的值放在一起了,比如文字 + 数字。

中文键盘的特别陷阱:( ) “ ” : , 看起来和 ( ) " " : , 几乎一样,但 Python 不认。记得切换到英文输入法。

定义

语法错误 Syntax error

A syntax error means the code breaks the grammar rules of the language, so the program cannot start.
语法错误表示代码违反了语言的语法规则,所以程序根本无法开始运行。

运行时错误 Runtime error

A runtime error happens while the program is running; the lines before it have already run.
运行时错误发生在程序运行过程中;出错之前的那些行已经执行过了。

示例

名字拼错了

动手试试

运行看看:报错指向第 2 行。把大写的 N 改掉再运行。

name = "Ada"
print(Name)

这个例子故意以报错结束:重点是学会读报错信息。

逐步执行
  1. L1第 1 行没问题:把 "Ada" 存在名字 name 下。
  2. L2Name(大写 N)是另一个名字,Python 从没见过它:NameError。

中文标点

动手试试

仔细看括号。换成英文括号再运行。

print("first line")
print("second line")

这个例子故意以报错结束:重点是学会读报错信息。

逐步执行
  1. L2( 和 ) 是全角(中文)括号。Python 在运行任何一行之前就停了,连第 1 行也不会运行。

常见错误

真正的错误可能在上一行

第 3 行少了 ),经常会在第 4 行才报错,因为 Python 到那里才发现不对。既要看报错的那一行,也要看它上面一行。

改掉一个,又冒出下一个

Python 一次只报告一个错误。改完再运行,出现新的错误通常说明你有进展。

小测验

1. 会打印出什么?

print("one")
print("two"
print("three")
  1. A
    one
  2. B
    one
    two
  3. C
    (什么都不打印)
查看答案

答案:C

语法错误会让程序在开始之前就停下,所以连第 1 行都不会运行。

2. 报错之前打印了什么?

print("start")
print(10 / 0)
print("end")
  1. A
    start
  2. B
    start
    end
  3. C
    (什么都不打印)
查看答案

答案:A

这是运行时错误:第 1 行已经运行,第 2 行出错,第 3 行不会运行。

动手练习

3 道练习,分三层:先预测程序的输出,再按新需求改程序,最后从零写一个。代码在浏览器里运行,提交马上判题。

  1. 预测输出先打印了什么?

    这段程序会出错。写出它在出错之前打印的内容。

  2. 改需求修两个错误

    这段程序应该打印 Total: 5,然后打印 Done。把错误修好。

  3. 从零写重新写对

    有人用中文键盘敲了下面这段代码,里面有三处问题:

    print("Python")
    print("Year:", 2026)
    Print("OK")

    在编辑器里写出正确的版本(自己打,不要粘贴)。它应该打印:

    Python
    Year: 2026
    OK

在互动课里练这一课

打开互动课,这些例子都能直接改、直接运行,练习题提交马上判题。免费开始,不用注册。

互动课按顺序解锁:前面的课还没学,会先带你到课程地图。

本课术语

术语中文英文定义
Syntax error语法错误An error where code breaks the language's grammar, so the program cannot start.
Runtime error运行时错误An error that happens while the program is running.
NameError名字错误An error raised when code uses a name that has not been defined.
TypeError类型错误An error raised when an operation is used on a value of the wrong type.