第 02 节:变量不是盒子,是名字贴到对象上
本节 objectives:
- 用变量保存程序中会变化的值
- 区分数字、字符串和布尔值的基本用途
- 用类型转换修复输入和计算之间的错位
同样叫 age,里面不一定是数字
Python 变量看起来像“盒子”,但更准确的说法是:名字绑定到对象。对象有身份、类型和值;类型决定它能参与什么操作1。这条直觉会帮你避开最常见的初学错误:把文本 "18" 当数字 18 用。
程序里的状态通常先从三类值开始:数字做计算,字符串放文本,布尔值表达判断。
讲解
赋值让名字指向一个值。 score = 10 创建名字 score,让它指向整数对象。之后写 score = score + 5,不是把盒子里某个神秘东西揉一揉,而是算出新值,再让 score 指向它1。
字符串不是数字。 "3" + "4" 得到 "34",因为这是文本拼接;3 + 4 得到 7,因为这是数字加法。Python 教程把数字和字符串作为不同入门对象介绍,正是因为它们的操作含义不同2。
布尔值用于决策。 比较表达式如 score >= 60 会得到 True 或 False。它们会在下一节进入 if。
输入常常先是字符串。 input() 读到的内容是文本。要做数字计算,先用 int() 或 float() 转换;转换失败会产生异常,第 8 节会做最小处理3。
跟我做一遍(worked example)
写一个把分钟换算成小时和剩余分钟的脚本:
这里 // 取整除结果,% 取余数。变量名不是装饰,而是让你看懂每一步的意义:总分钟数先拆成完整小时,再留下不足一小时的部分。
换你补全(faded example)
补全脚本,把字符串输入转成整数后再加 1:
答案:
关键判断点是:只要值来自文本,做算术前就要先问“它现在是不是真数字”。
小结 + 通向下一节
变量让程序有了状态,类型决定状态能做什么。下一节把布尔判断接到流程里,让程序根据状态走不同分支。
Footnotes
-
Python Reference: Data model — https://docs.python.org/3/reference/datamodel.html ↩ ↩2
-
Python Tutorial: An Informal Introduction to Python — https://docs.python.org/3/tutorial/introduction.html ↩
-
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
错误信息里会出现 str 和 int。
看参考答案
这是字符串和整数不能直接相加的问题,不是 print() 的问题。