Python 从零开始 · 第 2 课:变量与数据类型——让程序会“记东西”
上一课我们学会了 print(),能打印文字、数字,还能算 1+1。但你有没有发现一个问题:
print("我叫张三")
print("我今年 20 岁")
print("我在学 Python")这串代码跑起来没问题,可它有个大毛病——"张三""20""Python"这些信息是写死在代码里的。哪天你想把名字换成"李四",就得一行行改。而且程序从头到尾就只会"照着念",不会"记住"任何东西。
真正有用的程序,是能先把东西存起来、随时取出来用、还能改来改去的。这就是这一课的主角——变量。
一、变量是什么?一句话说清
变量,就是给一个值起个名字,存进内存里,之后用名字就能找到它。
看代码:
name = "张三"
age = 20
print(name)
print(age)运行结果:
张三
20拆开看:
name = "张三":把"张三"这个值,装进一个叫name的盒子里age = 20:把数字20装进age的盒子里print(name):把name盒子里的东西拿出来打印
这里的 = 不是"等于",是"赋值"——读作"把右边的值放进左边"。记住这个方向:右边算出来 → 放进左边。
以后想改名字,只改一处:
name = "李四" # 只改这一行
print(name) # 输出:李四这就是变量的第一个好处:一处修改,处处生效。
二、变量名的规矩(起名别乱来)
变量名不是随便起的,有规则,也有"潜规则":
必须遵守的硬规则:
- 只能由 字母、数字、下划线
_组成 - 不能以数字开头(
1name是错的,name1可以) - 不能用 Python 的关键字(比如
print、if、for这些被占用的小写词)
强烈建议遵守的软规则(别人都这么写,你也这么写好看):
- 用有意义的英文名:
age比a好,total_price比x1好 - 多个单词用下划线连接:
user_name、total_price(这叫蛇形命名 snake_case) - 别用拼音,别用单个字母(除非就是循环计数)
对比一下:
# 差
a = 20
b = "张三"
# 好
age = 20
name = "张三"第二份,别人一眼就懂你在存什么。
三、数据类型:盒子有不同种类
变量是"盒子",但盒子也分种类——装文字的盒子,和装数字的盒子,不是一个盒子。Python 里主要有这几种类型(先认熟前 4 个):
| 类型 | 英文名 | 是什么 | 例子 |
|---|---|---|---|
| 字符串 | str | 一段文字,用引号包起来 | "张三" 'hello' |
| 整数 | int | 整数,没有小数点 | 20 -5 100 |
| 浮点数 | float | 带小数点的数 | 3.14 -0.5 |
| 布尔值 | bool | 只有两种:真 / 假 | True False |
注意几个坑:
1. 数字加不加引号,完全是两码事:
age = 20 # int,是数字,能算加减
age2 = "20" # str,是文字"20",不能算加减
print(age + 1) # 21,数字加法
print(age2 + "1") # "201",文字拼接(把"20"和"1"连起来)2. 布尔值的 True / False 首字母必须大写,小写的 true 会报错。
3. 浮点数就是小数,别奇怪为什么叫这个名,先记住 3.14 这种带点的数是 float。
想知道一个变量是什么类型,用 type():
print(type(20)) # <class 'int'>
print(type(3.14)) # <class 'float'>
print(type("你好")) # <class 'str'>
print(type(True)) # <class 'bool'>数字的算术运算:加减乘除、整除、取模、幂
数字类型之所以重要,是因为能算。Python 最常用的算术运算符就这 7 个:
| 运算符 | 含义 | 例子 | 结果 |
|---|---|---|---|
+ | 加 | 2 + 3 | 5 |
- | 减 | 7 - 2 | 5 |
* | 乘 | 3 * 4 | 12 |
/ | 除(结果是小数) | 7 / 2 | 3.5 |
// | 整除(舍去小数部分) | 7 // 2 | 3 |
% | 取模(求余数) | 7 % 2 | 1 |
** | 幂(次方) | 2 ** 3 | 8 |
print(2 + 3) # 5
print(7 - 2) # 5
print(3 * 4) # 12
print(7 / 2) # 3.5,除出来是小数
print(7 // 2) # 3,整除:把小数部分直接扔掉,不是四舍五入
print(7 % 2) # 1,取模:7 除以 2 的余数
print(2 ** 3) # 8,幂:2 的 3 次方后面三个(// % **)是新手最容易懵的,重点记:
//整除:7 // 2 = 3,直接扔掉小数,不是四舍五入。%取模:7 % 2 = 1,求的是余数——判断奇偶就靠它(下一课会用到)。**幂:2 ** 3 = 8,就是「2 的 3 次方」。
运算符优先级:谁先算?
一行里出现多个运算符时,Python 有固定的计算顺序,从高到低:
| 优先级 | 运算符 | 说明 |
|---|---|---|
| 最高 | () | 括号,先算括号里的 |
| ↑ | ** | 幂 |
* / // % | 乘、除、整除、取模 | |
| ↓ | + - | 加、减 |
print(2 + 3 * 4) # 14,不是 20!先算 3*4=12,再加 2
print((2 + 3) * 4) # 20,括号强制先算 2+3
print(2 ** 3 ** 2) # 512,幂"从右往左":先 3**2=9,再 2**9=512铁律:拿不准就先加括号。括号一加,谁先谁后一目了然,别人也看得懂。
比较运算(><)和逻辑运算(andornot)的优先级,留到第 3 课讲到它们时再补全。
四、让程序"说话":输入 input()
光会存,还不够。程序得能听你说话——用 input()。
name = input("你叫什么名字?")
print("你好," + name)运行后,程序会停住,等你打字,回车后继续:
你叫什么名字?小明
你好,小明input() 的作用:弹出提示,等你输入,把你输入的字符串返回。
注意一个大坑:input() 拿到的永远是字符串,哪怕是数字:
age = input("你几岁了?") # 你输入 20
print(type(age)) # <class 'str'>,是字符串不是数字!
print(age + 1) # 报错!字符串不能和数字相加想算数字,得先"转换类型":
age = input("你几岁了?") # 输入 20,得到字符串 "20"
age = int(age) # 转成整数 20
print(age + 1) # 21int() 是把字符串转成整数,float() 是转成小数,str() 是把别的类型转回字符串。这个转换是下一课的铺垫,现在先混个脸熟。
五、字符串拼接:把几段文字拼起来
print 里用 + 可以把字符串拼起来,但两边必须都是字符串:
name = "小明"
age = 20
print("我叫" + name) # 我叫小明,两个都是字符串,OK
print("我今年" + age + "岁") # 报错!age 是数字,不能和字符串用 + 拼要拼数字,先转成字符串:
print("我今年" + str(age) + "岁") # 我今年20岁还有一种更省事、也更推荐的写法叫 f-string(格式化字符串),在引号前加个 f,把变量用 {} 包起来:
print(f"我叫{name},我今年{age}岁"){} 里的变量会被自动填进去,不用管类型、不用手动 str(),强烈推荐你用这个。
六、动手时间
打开你的 Python,敲一遍下面这题。先自己想,卡住了再看答案。
题目:做一个"自我介绍小助手"
程序先问你名字、年龄、喜欢的语言,然后打印一句完整的自我介绍:
你叫什么名字?小明
你今年几岁?20
你喜欢什么编程语言?Python
我叫小明,今年 20 岁,喜欢 Python。提示:
- 用
input()收三个值 - 年龄是数字,要用来拼句子时记得转
str()或者用 f-string
点我看答案(先自己写!)
name = input("你叫什么名字?")
age = input("你今年几岁?")
language = input("你喜欢什么编程语言?")
print(f"我叫{name},今年 {age} 岁,喜欢 {language}。")这里 age 没做数学运算,只是拼进句子里,所以直接用 f-string 就行,不用 int()。
再练一个:让程序帮你算年龄。输入出生年份,输出你 2026 年时的岁数:
birth_year = input("你哪年出生的?")
birth_year = int(birth_year) # 转成数字才能算
age = 2026 - birth_year
print(f"到 2026 年你 {age} 岁")试试把 int() 那行删掉,看会报什么错——报错不可怕,看懂报错才是进步。
七、小结
- 变量就是给值起名字存起来,
=把右边的值装进左边。 - 类型不能乱混:
+只拼字符串,数字要先转;f-string 最好用。 input()拿到的永远是字符串,要做算术先int()/float()转一下。
下一课,我们让程序学会"做判断"——if 语句,程序从此不再只会一条路走到黑。
先别急着往后看,把这一课的动手题敲熟,变量和类型是你后面所有代码的地基。