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

变量 · Python 从零开始

程序怎样记住东西?

课程目录

为什么需要它

游戏要记住分数,商店要记住价格,表单要记住你的名字。没有记忆,程序就只能打印固定的内容。变量 Variable 给值起一个名字,让你能把它存起来、之后再用、还能修改。

直觉理解

把变量想成贴在值上的一张标签:

score = 10

读作「让 score 指向 10」。这里的 = 是存进去,不是「等于」。所以下面这行才说得通:

score = score + 5

Python 先算右边(10 + 5 = 15),然后把 score 这张标签贴到 15 上。读赋值 Assignment 语句要从右往左:先算出值,再给它起名字。

名字可以用字母、数字和 _,不能以数字开头,不能有空格,大小写不同就是不同的名字(Score ≠ score)。

定义

变量 Variable

A variable is a name that refers to a value stored in the computer's memory.
变量是一个名字,它指向存在计算机内存里的一个值。

赋值 Assignment

An assignment statement (name = expression) evaluates the expression on the right and binds the result to the name on the left.
赋值语句(名字 = 表达式)先计算右边的表达式,再把结果绑定到左边的名字上。

示例

点下面的步骤,看 score 的值怎么变化。

score = 0
score = score + 10
score = score + 5
print(score)
逐步执行
  1. L1创建变量:score 指向 0。score = 0
  2. L2先算右边:0 + 10 = 10。然后 score 指向 10。score = 10
  3. L3再来一次:10 + 5 = 15。score = 15
  4. L4print 显示当前的值:15。output: 15

复制一个值

动手试试

执行 b = a 之后,再改 a 不会影响 b。

a = 3
b = a
a = 5
print(a, b)
逐步执行
  1. L1a 指向 3。a = 3
  2. L2b 拿到 a 当时的值:3。a = 3, b = 3
  3. L3a 改为指向 5;b 仍然指向 3。a = 5, b = 3
  4. L4输出:5 3output: 5 3

常见错误

= 不是「等于」

x = x + 1 在数学里说不通,但在 Python 里它的意思是「x 加 1」。判断是否相等要用 ==(后面会学)。

还没创建就使用

在任何 total = ... 之前就 print(total) 会报 NameError。Python 是从上往下读的。

小测验

1. 这段代码会输出什么?

x = 2
x = x * 3
x = x + 1
print(x)
  1. A
    7
  2. B
    9
  3. C
    2
查看答案

答案:A

2 × 3 = 6,再 6 + 1 = 7。

2. 这段代码会输出什么?

a = 1
b = a
a = 10
print(b)
  1. A
    10
  2. B
    1
  3. C
    11
查看答案

答案:B

a 改变之前,b 已经拿到了值 1。

动手练习

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

  1. 预测输出跟踪变量的值

    准确写出程序的输出。

  2. 改需求加一个折扣

    加一个变量 discount,值是 5。然后让 total 等于单价 × 数量再减去折扣,并打印 total(应该是 31)。

  3. 从零写长方形

    创建 width = 7 和 height = 4。把面积存在 area,周长存在 perimeter,然后分两行打印面积和周长。

在互动课里练这一课

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

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

本课术语

术语中文英文定义
Variable变量A name that refers to a value stored in memory.
Assignment赋值A statement that evaluates the right side and binds the result to a name.
Value值A piece of data, such as 42 or "hello".