3.3知识点 · 课时
Python 起步:变量与数据类型
掌握 Python 变量与基本数据类型,学会使用列表和元组存储多个数据。
从伪代码到 Python
上一关我们用伪代码描述了「批改选择题」的算法。这一关,我们正式学 Python,把伪代码变成真正能运行的程序。
先从最基础的概念开始:变量和数据类型。
变量:装数据的盒子
变量是给数据起的名字,就像一个贴了标签的盒子:
answer = "A" # 学生的答案
score = 2 # 得分
answer是变量名,"A"是装进去的值- Python 用
=赋值(左边变量名,右边值) - 变量名规则:字母、数字、下划线,不能用数字开头,不能用空格
和数学的
=不同!Python 的=是"赋值"(把右边放进左边),不是"等于"。判断相等用==(下一关会学)。
四种基本数据类型
| 类型 | 关键字 | 例子 | 说明 |
|---|---|---|---|
| 整数 | int | 10, 0, -3 | 没有小数点的数 |
| 浮点数 | float | 3.14, 0.5 | 有小数点的数 |
| 字符串 | str | "A", 'hello' | 用引号括起来的文本 |
| 布尔值 | bool | True, False | 只有真和假两个值 |
score = 2 # int
price = 9.9 # float
answer = "A" # str
is_correct = True # bool
用
type()可以查看变量的类型:type(score)→<class 'int'>
列表:存一组数据
批改试卷时,标准答案通常不止一道题。用单独的变量存很麻烦:
a1 = "A"
a2 = "C"
a3 = "B"
# ...10 道题要写 10 个变量?
**列表(List)**就是用来存一组有序数据的容器,用方括号 [] 表示:
answers = ["A", "C", "B", "D", "A"]
一个列表变量就存了 5 道题的答案!
访问列表元素:用下标
列表里的每个元素都有编号(下标),从 0 开始:
answers = ["A", "C", "B", "D", "A"]
# 0 1 2 3 4 ← 下标
print(answers[0]) # 输出 "A"(第 1 个)
print(answers[2]) # 输出 "B"(第 3 个)
⚠️ 下标从 0 开始,不是 1!这是编程的惯例,初学者最容易记错。
列表的常用操作
| 操作 | 代码 | 说明 |
|---|---|---|
| 取长度 | len(answers) | 列表有几个元素(返回 5) |
| 修改元素 | answers[0] = "B" | 把第 1 个改成 "B" |
| 末尾添加 | answers.append("C") | 在最后加一个 |
| 判断包含 | "A" in answers | 列表里有没有 "A"(返回 True/False) |
answers = ["A", "C", "B"]
print(len(answers)) # 3
answers.append("D") # 变成 ["A", "C", "B", "D"]
print("A" in answers) # True
列表可以存不同类型
student = ["张同学", 16, True] # 字符串、整数、布尔值混存
元组:不可变的列表
**元组(Tuple)**和列表几乎一样,区别是:创建后不能修改(不可变)。用圆括号 () 表示:
point = (3, 5) # 一个坐标点
rgb = (255, 128, 0) # 一个颜色(RGB)
列表 vs 元组
| 列表 | 元组 | |
|---|---|---|
| 符号 | [] | () |
| 能否修改 | ✅ 能(append、修改元素) | ❌ 不能 |
| 适用场景 | 数据会变化(如待批改的答案) | 数据固定不变(如坐标、常量) |
answers = ["A", "B", "C"] # 列表:可以改
answers[0] = "D" # ✅ 正常
point = (3, 5) # 元组:不能改
# point[0] = 10 # ❌ 报错!
什么时候用元组?当一组数据不应该被修改时,用元组能防止意外改动。比如一周 7 天的名称,用元组比列表更合适:
WEEKDAYS = ("周一", "周二", ..., "周日")
📱 项目推进·第 3 关
现在用 Python 表示「自动批改助手」需要的数据:
# 标准答案(5 道选择题)
standard_answers = ["A", "C", "B", "D", "A"]
# 学生的答案
student_answers = ["A", "B", "B", "D", "C"]
# 每题分值(固定不变,用元组)
points = (2, 2, 2, 2, 2)
# 当前正在批改的是第几题(从 0 开始)
current = 0
# 这道题学生答对了吗?
is_correct = student_answers[0] == standard_answers[0]
下一步(第 4 关),我们会用顺序结构把这些变量串起来,让程序一步步执行批改。
🤔 思考
- 为什么 Python 的下标从 0 开始,而不是从 1 开始?(提示:和内存地址计算有关)
- 把一周 7 天存起来,用列表还是元组更好?为什么?
["A", "B", "C"]和("A", "B", "C")有什么区别?
📝 知识小结
- 变量:装数据的盒子,用
=赋值 - 四种基本类型:int(整数)、float(浮点)、str(字符串)、bool(布尔)
- 列表
[]:有序、可修改,下标从 0 开始,append()添加,len()取长度 - 元组
():有序、不可修改,适合存固定不变的数据 - 判断包含用
in:"A" in answers
随堂练习
检验一下你对本节内容的理解
下面代码运行后,输出什么?
answers = ["A", "C", "B", "D"]
answers.append("A")
print(len(answers))
print(answers[1])