信息科技· 第3章 算法与 Python 编程
3.3知识点 · 课时

Python 起步:变量与数据类型

掌握 Python 变量与基本数据类型,学会使用列表和元组存储多个数据。

从伪代码到 Python

上一关我们用伪代码描述了「批改选择题」的算法。这一关,我们正式学 Python,把伪代码变成真正能运行的程序。

先从最基础的概念开始:变量数据类型

变量:装数据的盒子

变量是给数据起的名字,就像一个贴了标签的盒子:

answer = "A"      # 学生的答案
score = 2          # 得分
  • answer 是变量名,"A" 是装进去的值
  • Python 用 = 赋值(左边变量名,右边值)
  • 变量名规则:字母、数字、下划线,不能用数字开头,不能用空格

和数学的 = 不同!Python 的 = 是"赋值"(把右边放进左边),不是"等于"。判断相等用 ==(下一关会学)。

四种基本数据类型

类型关键字例子说明
整数int10, 0, -3没有小数点的数
浮点数float3.14, 0.5有小数点的数
字符串str"A", 'hello'用引号括起来的文本
布尔值boolTrue, 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])