怎么判断 Python 代码的输出结果:新手逐行追踪法

更新于 2026-09-29

要预测一段 Python 代码的输出,别指望一眼“看出”答案。顺着代码的执行顺序往下读,随时记下每个变量的当前值,并写下每一个传给 print() 的值。无论是新手的简短练习,还是把循环、条件和表达式组合在一起的长代码片段,这个方法都适用。

核心原则:模拟执行,不要猜

除非有控制结构改变执行路径,否则 Python 会按顺序逐条执行语句。你要做的,就是一步不落地模拟这个执行过程。

读代码时,边读边填一张小小的追踪表:

步骤代码行或操作当前变量值打印输出
1score = 4score = 4
2score = score + 3score = 7
3print(score)score = 77

对于这段代码:

``python score = 4 score = score + 3 print(score) ``

输出是:

``text 7 ``

第二次赋值不会显示任何东西,只是用新值替换掉 score 原来的值。只有 print(score) 会产生看得见的输出。

有个好习惯:把计算机“存了什么”和“显示了什么”分开看。变量负责存值,print() 负责显示值。

第 1 步:从变量和赋值开始

每遇到一条赋值语句,就立刻更新追踪记录。

``python pet = "cat" pet = "dog" print(pet) ``

输出:

``text dog ``

变量不会同时记住两个值。第二次赋值之后,pet 指向的就是 "dog"。

再看一个用到变量旧值的赋值:

``python points = 10 points = points - 4 points = points * 2 print(points) ``

追踪一下:

语句执行后 points 的值
points = 1010
points = points - 46
points = points * 212

输出:

``text 12 ``

points = points - 4 要从右往左读:先用 points 的当前值算出右边的表达式,再把结果存回 points。

第 2 步:先算表达式,再更新变量

执行赋值语句时,Python 会先算出等号右边的值,再完成赋值。

``python x = 5 y = x + 2 x = 1 print(x, y) ``

输出:

``text 1 7 ``

执行 y = x + 2 这一行时,x 还是 5,所以 y 变成 7。之后再改 x,并不会回过头去改变 y。

这是答错的常见原因:看到 x 的最终值,就不小心把它代入了前面的代码行。

注意表达式内部的运算顺序

先算乘除,再算加减。

``python result = 2 + 3 * 4 print(result) ``

输出:

``text 14 ``

Python 先算 3 * 4,再加上 2。

加上括号,结果就不一样了:

``python result = (2 + 3) * 4 print(result) ``

输出:

``text 20 ``

预测输出时,先算括号里的表达式,再算乘除,最后算加减。

第 3 步:逐轮追踪每一次循环

for 循环会对序列中的每个元素各执行一次循环体。不要把好几轮循环压缩成脑子里的一步。

```python total = 0

for number in [2, 4, 6]: total = total + number

print(total) ```

追踪表:

本轮取值相加前的 total相加后的 total
202
426
6612

输出:

``text 12 ``

循环体执行了三次。print(total) 没有缩进,所以要等循环结束后才执行。

缩进很关键,它决定了哪些语句属于循环:

```python for number in [1, 2, 3]: print(number)

print("done") ```

输出:

``text 1 2 3 done ``

第一个 print() 在循环内部,执行了三次;最后一个 print() 在循环外面,只执行一次。

追踪之前先弄清 range()

对于 range(start, stop),Python 包含 start,但不包含 stop。

``python for n in range(2, 5): print(n) ``

输出:

``text 2 3 4 ``

追踪循环体之前,先把实际取值写在循环旁边。这里应该写 2, 3, 4,别想当然地以为 5 也包括在内。

第 4 步:用当前值判断条件

if 语句决定走哪条路径。条件要在 Python 执行到这一行的那一刻,用当时的变量值来判断。

```python temperature = 18

if temperature > 20: print("warm") else: print("cool") ```

输出:

``text cool ``

18 > 20 不成立,所以 Python 跳过第一个代码块,执行 else 代码块。

循环里的条件,每一轮都要重新单独判断:

``python for n in [1, 2, 3, 4]: if n % 2 == 0: print(n) ``

输出:

``text 2 4 ``

% 运算符返回余数。一个数除以 2 余数为 0,它就是偶数。

完整的追踪过程如下:

nn % 2 == 0输出
1假
2真2
3假
4真4

别把 if 条件当成贴在整个循环上的标签。循环体每执行一次,都要重新判断一次这个条件。

第 5 步:弄准 print() 的输出格式

print() 有自己的一套格式规则。用逗号分隔传入多个值时,Python 通常会在它们之间加一个空格。

``python name = "Milo" age = 3 print(name, age) ``

输出:

``text Milo 3 ``

字符串和数字之所以能这样一起打印,是因为 print() 会把传入的每个值都转换成适合显示的格式。

再对比一下字符串拼接:

``python name = "Milo" age = 3 print(name + str(age)) ``

输出:

``text Milo3 ``

这里 str(age) 把数字转成文本,+ 把两个字符串直接连起来,中间不加空格。

还要注意在循环内打印和在循环外打印的区别:

```python count = 0

for n in range(3): count = count + 1 print(count)

print("final:", count) ```

输出:

``text 1 2 3 final: 3 ``

输出一共四行,因为缩进的 print(count) 每轮循环都会执行一次。

完整示例:变量、循环加条件

先别看讲解,自己追踪一下这段代码:

```python total = 0

for n in range(1, 5): if n % 2 == 1: total = total + n

print(total) ```

首先,把 range(1, 5) 展开成 1, 2, 3, 4。

nn 是奇数吗?本轮结束后的 total
1是1
2否1
3是4
4否4

输出:

``text 4 ``

只有 1 和 3 满足条件,所以只加上了这两个值。最后的 print(total) 在循环结束后执行。

Python 输出题快速检查清单

确定答案之前,先核对以下几点:

只要有一项的答案是“没有”,就把代码重新追踪一遍。大多数错误都出在漏掉了某一次状态变化,而不是 Python 语法有多难。

练习时别太早看答案

预测代码输出是一种推理能力:先确定当前状态,套用一条规则,更新状态,然后重复。最好的练习方式是做一批简短、多样的代码片段,而且每道题都要在看到运行结果之前,先给出自己的答案。

用 PurrLearn 的 Python 输出测验练习逐行读代码。某道题答错了,就找出你的追踪从哪一步开始和 Python 的实际执行分道扬镳;这比单纯记住正确输出有用得多。

常见问题

不运行代码,怎么预测 Python 的输出?

在纸上或用追踪表模拟执行。每次赋值后记下变量的值,列出每一轮循环,逐一判断条件,再按顺序抄下每一个传给 print() 的值。

Python 是从上到下执行代码的吗?

通常是。Python 按顺序执行语句,但循环会重复执行缩进的代码块,条件判断也可能跳过某些代码块。函数、异常等特性会让情况更复杂,但对新手级的代码片段来说,从上到下逐行追踪就是正确的出发点。

为什么 range(1, 5) 的最后一个数不是 5?

range() 的第二个参数是停止点,本身不包含在结果里。range(1, 5) 生成的是 1、2、3 和 4。

Python 输出题最常见的错误是什么?

特别常见的一种是:计算前面某一行代码时,用了变量的最终值。解决办法很简单:每条改变变量的语句执行完,都写下这个变量当时的值。

需要背 Python 输出的套路吗?

记住几条规则就够了,比如赋值顺序、缩进、运算符优先级和 range() 的端点。但每遇到新的代码片段,都要追踪它实际的执行过程,别依赖一个只是看起来相似的套路。

配套互动测验

喵学堂的免费互动测验把这些概念变成随手小测,每题都有人话解析。

看看所有测验

想边学边练,不只是读?

注册后可以用互动课程边学边练,成绩、错题本和学习进度都会自动保存。

免费注册