agentmentoragentmentor

第 02 节:变量不是盒子,是名字贴到对象上

本节 objectives:

  • 用变量保存程序中会变化的值
  • 区分数字、字符串和布尔值的基本用途
  • 用类型转换修复输入和计算之间的错位

先修:能运行 .py 脚本 | 上一节 << 01 | 下一节 03 >>

同样叫 age,里面不一定是数字

Python 变量看起来像“盒子”,但更准确的说法是:名字绑定到对象。对象有身份、类型和值;类型决定它能参与什么操作1。这条直觉会帮你避开最常见的初学错误:把文本 "18" 当数字 18 用。

程序里的状态通常先从三类值开始:数字做计算,字符串放文本,布尔值表达判断。

讲解

赋值让名字指向一个值。 score = 10 创建名字 score,让它指向整数对象。之后写 score = score + 5,不是把盒子里某个神秘东西揉一揉,而是算出新值,再让 score 指向它1

字符串不是数字。 "3" + "4" 得到 "34",因为这是文本拼接;3 + 4 得到 7,因为这是数字加法。Python 教程把数字和字符串作为不同入门对象介绍,正是因为它们的操作含义不同2

布尔值用于决策。 比较表达式如 score >= 60 会得到 TrueFalse。它们会在下一节进入 if

输入常常先是字符串。 input() 读到的内容是文本。要做数字计算,先用 int()float() 转换;转换失败会产生异常,第 8 节会做最小处理3

跟我做一遍(worked example)

写一个把分钟换算成小时和剩余分钟的脚本:

python
total_minutes = 135hours = total_minutes // 60minutes = total_minutes % 60
print("小时:", hours)print("剩余分钟:", minutes)

这里 // 取整除结果,% 取余数。变量名不是装饰,而是让你看懂每一步的意义:总分钟数先拆成完整小时,再留下不足一小时的部分。

换你补全(faded example)

补全脚本,把字符串输入转成整数后再加 1:

python
age_text = "18"next_year = ____(age_text) + 1print(next_year)

答案:

python
age_text = "18"next_year = int(age_text) + 1print(next_year)

关键判断点是:只要值来自文本,做算术前就要先问“它现在是不是真数字”。

小结 + 通向下一节

变量让程序有了状态,类型决定状态能做什么。下一节把布尔判断接到流程里,让程序根据状态走不同分支。

Footnotes

  1. Python Reference: Data model — https://docs.python.org/3/reference/datamodel.html 2

  2. Python Tutorial: An Informal Introduction to Python — https://docs.python.org/3/tutorial/introduction.html

  3. Python Tutorial: Errors and Exceptions — https://docs.python.org/3/tutorial/errors.html

练习

Level 1: 写一个温度标签脚本。

  • 做法:设置 city = "Shanghai"temperature = 31,输出 Shanghai: 31C
提示 1

可以用逗号传给 print()。 Level 2: 修复类型错误。

  • 做法:运行 print("5" + 2),阅读错误,再改成输出 7
提示 2

错误信息里会出现 strint

看参考答案

这是字符串和整数不能直接相加的问题,不是 print() 的问题。

自评