KEEL · 龙骨 · A CURRICULUM FOR THE AI ERA

02 · 第一个程序:跑出一行结果,看懂那几行红字 — keel 龙骨

## 现场:你已经装好了,但结果在哪

现场:你已经装好了,但结果在哪

上一章确认了版本号,你有了解释器。现在打开一个文件,敲下三行字,怎么知道它真的执行了?

再往下,第一次写错的概率几乎是百分之百。而 Python 报错时给你的是三四行英文——
不知道从哪读、读哪一行,就会变成「照着复制粘贴、错了就重装 Python」的循环。

这一章只做两件事:真的跑出一行结果,以及把最常见的三类报错读懂。

一、它是什么

一句话:「跑起来」就是那个解释器把你的文件读进去、一行一行执行;print 是你唯一需要的输出手段。

print 做的事情是:把括号里的东西显示在屏幕上。它不是一个「输出到文件」的命令,
只是在终端里打出一行字——这正是零基础最需要的反馈方式。

二、跑一行结果出来

两种方式,先用第一种。

方式一:交互式(边敲边看)。敲 python 回车,会看到 >>> 提示符;这时直接敲:

>>> print("你好,世界")
你好,世界
>>> exit()

>>> 是「我等你说」的意思。你敲一行,它立刻回一行,这是学语言最省事的工具。

方式二:写进文件再跑。新建 hello.py:

name = "小明"
print("你好," + name)

然后在同一个目录下:

python hello.py

预期输出形状(CPython 3.13.14):

你好,小明

这里有一个新手必踩的判断:文件方式跑成功时,什么提示都没有。
没有「运行完毕」,没有「成功」——只有 print 打出来的那行字。
所以「什么都没输出」通常就是出错了,别以为它安静地成功了。

三、跑不通时看哪几行

报错不可怕,可怕的是不看。三类错误覆盖了新手绝大多数的第一次。

① 括号没关上:

    print("你好"
         ^
SyntaxError: '(' was never closed

SyntaxError 是「我读不懂这句话」。注意那个 ^ 的位置——它指向的是从这里开始看不懂,
不一定是你打错的那个字。这个例子里漏的是最后面的右括号。

② 忘了缩进:

for i in range(3):
print(i)
    ^^^^^
IndentationError: expected an indented block after 'for' statement on line 1

IndentationError 是「这一行的位置不对」。报错里直接写了答案:
'for' statement on line 1 后面的那一块要缩进。

③ 名字没定义过:

    print(nmae)
          ^^^^
NameError: name 'nmae' is not defined

NameError 是「这个名字我不认识」。十次里有九次是拼错了——
例子里是 name 打成了 nmae。剩下那一次是名字在上文根本没出现过。

读报错的固定三步,无论多长的红字都一样:

  1. 只看最后一行。 它写着错误类型和一句话解释,其余是位置信息。
  2. 看倒数第几行里那个 ^^^ 指的地方——它指出问题出在哪个字附近。
  3. 回到你文件的那一行。 上面几行 File "...", line N 已经告诉你行号。

四、它不是什么

读完你能做什么

下一步:你自己写的三行跑通了。下一章跑别人的——一段从 AI 或同事那里拿来的、
第一行就 import 一个你没装过的包。

进入 keel 阅读