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。剩下那一次是名字在上文根本没出现过。
读报错的固定三步,无论多长的红字都一样:
- 只看最后一行。 它写着错误类型和一句话解释,其余是位置信息。
- 看倒数第几行里那个
^^^指的地方——它指出问题出在哪个字附近。 - 回到你文件的那一行。 上面几行
File "...", line N已经告诉你行号。
四、它不是什么
- 不是「报错就是电脑坏了」。 上面三类全是你写的字本身的问题,与环境、与「Python 装得对不对」无关。
- 不是编译器那种「先编译再运行」。 没有单独的编译步骤,写完直接跑,所以才说它是逐行执行的。
- 不是「跑得越久越可靠」。 解释器读到最后一行就退出,进程结束了才算跑完——它不会一直在后面跑。
读完你能做什么
- 用交互式和文件两种方式各跑出一行结果,并说出它们各自的用途;
- 看到
SyntaxError/IndentationError/NameError时,知道先去读最后一行、再看^^^; - 知道「文件方式没输出」通常意味着出错了,而不是成功了。
下一步:你自己写的三行跑通了。下一章跑别人的——一段从 AI 或同事那里拿来的、
第一行就import一个你没装过的包。