本实验旨在帮助学生掌握 Python 元组的基本概念和操作,通过实际操作加深对元组的
理解,并提高解决实际问题的能力。
1. 理解和掌握元组的定义和初始化方法。
2. 熟悉元组的各种操作,包括访问、拼接、切片、解压和遍历等。
3. 能够应用元组解决实际问题,例如统计竞赛参与者的信息。
三、实验任务及原理
任务要求:
假设有 20 名同学参加了编程竞赛,每位同学的信息包括:学号、姓名、完成题⽬数、
总⽤时。请按照如下要求完成:
(1)输⼊每位同学的信息,使⽤元组存储。
(2)根据完成题⽬数进⾏排序,并显示前 3 名同学的信息(完成题⽬数最多的排在前
⾯,若题⽬数相同,则总⽤时最少的排在前⾯)。显示格式如下:
学号 姓名 完成题⽬数 总⽤时
22208015501 张三 10 90m23s
22208015502 李三 10 100m33s
22208015503 王三 9 98m14s 计算所有⼈的完成题⽬的平均数并显示
(4)计算每个⼈的完成的题⽬平均时间并排序显示
学号 姓名 完成题⽬数 总⽤时 平均⽤时
22208015501 张三 10 90m23s 9m2s
22208015502 李三 10 100m33s 10m3s
22208015503 王三 9 98m14s 10m55s
…….
理论知识:
(1)元组的定义
在 Python 中,元组(tuple)是⼀种有序的、不可变的数据类型。它可以包含任意类型
的元素,包括数字、字符串、列表等。元组使⽤⼩括号 () 来创建,并且元组中的元素可以
通过索引访问。与列表(list)不同,元组⼀旦创建就不能被修改。Python 是⼀种动态类型
语⾔,在定义变量时不需要明确指定变量的类型,Python 会根据赋给变量的值来⾃动确定
其类型。
创建元组的⽅法:
1.1 包含任意元素
numbers = (1, 2, 3, 4, 5)
words = ("apple", "banana", "cherry")
mixed_list = (1, "hello", 3.14, True)
1.2 使⽤ tuple()构造函数
numbers = tuple(range(1, 6))
1.3 创建只包含 1 个元素的元组
single_element_tuple = (42,)
1.4 元组的嵌套
元组的嵌套指的是在⼀个元组中包含其他元组或不同类型的数据结构。使⽤嵌套可以创
建更复杂的数据结构,其中包含多个层次的元组结构。
nested_tuple = (1, 2, (3, 4), ("a", "b", "c"))
(2)元组的操作
元组的操作包括:访问、添加、删除、修改、拼接、重复、切⽚、解压、遍历。
2.1 访问
可以使⽤索引来访问元组中的元素。需要注意的是,索引必须是整数类型,并且不能超
出元组的范围,否则会引发 IndexError 错误。
my_tuple = (1, 2, 3, 4, 5) print(my_tuple[0])
print(my_tuple[-1])
2.3 添加、删除、修改
在 Python 中,元组是不可变的数据类型,这意味着⼀旦创建,就不能添加、修改或删
除元素。元组的元素是固定的,不能被更改。
如果需要添加元素,可以创建⼀个新的元组,将原来的元组与新元素合并。
my_tuple = (1, 2, 3)
new_tuple = my_tuple + (4,)
如果需要删除元素,只能创建⼀个新的元组,将不需要的元素排除在外。
my_tuple = (1, 2, 3, 4, 5)
# 删除 my_tuple[3]
new_tuple = my_tuple[:3] + my_tuple[4:]
print(my_tuple)
print(new_tuple)
如果需要修改元组中的某个元素,只能创建⼀个新的元组来替代原来的元组。
my_tuple = (1, 2, 3, 4, 5)
# my_tuple[3] = -4 错误!
new_tuple = my_tuple[:3] + (-4,) + my_tuple[4:]
print(my_tuple)
print(new_tuple)
2.4 拼接
元组的拼接可以通过 + 运算符来实现。当使⽤ + 运算符连接两个元组时,会创建⼀
个新的元组,包含原始元组中的所有元素。
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
result_tuple = tuple1 + tuple2
print(result_tuple)
print(new_tuple)
2.5 重复
可以使⽤乘法运算符 * 来实现元组的重复。通过将⼀个元组与⼀个整数相乘,可以创
建⼀个新的元组,其中包含原始元组重复指定次数的内容。
my_tuple = (1, 2, 3)
# 创建⼀个新的元组,并赋值给原始元组变量
my_tuple = my_tuple * 3 print(my_tuple)
2.6 切⽚
通过指定起始索引、结束索引和步⻓来获取元组的⼦集。切⽚操作返回⼀个新的元组,
⽽原始元组保持不变。
my_tuple = (1, 2, 3, 4, 5, 6, 7, 8, 9)
# 获取索引 1 到索引 4 之间的元素(不包括索引 4)
subset1 = my_tuple[1:4]
print(subset1)
# 获取从索引 2 开始到结束的元素
subset2 = my_tuple[2:]
print(subset2)
# 获取从开始到索引 6(不包括索引 6)的元素,步⻓为 2
subset3 = my_tuple[:6:2]
print(subset3)
# 获取整个元组的逆序
reverse_tuple = my_tuple[::-1]
print(reverse_tuple)
# 从索引 5 到 1(不包括索引 1)逆序,步⻓为 2
reverse_tuple = my_tuple[5:1:-2]
print(reverse_tuple)
2.7 解压
元组的解压指的是将元组中的元素分别赋值给多个变量的过程。当⼀个元组中包含多个
元素,⽽且希望将这些元素分别赋值给多个变量时,可以使⽤解压操作。
my_tuple = (1, 2, 3)
a, b, c = my_tuple
print(a)
print(b)
print(c)
元组的解压⾮常有⽤,特别是在函数返回多个值时。例如,可以将⼀个函数返回的多个
值直接解压到多个变量中
def get_coordinates():
return (10, 20, 30)
x, y, z = get_coordinates()
print("x =", x)
print("y =", y)
print("z =", z)
可以使⽤星号 * 来捕获多余的元素,将其作为⼀个列表赋值给⼀个变量。
my_tuple = (1, 2, 3, 4, 5)
a, b, *rest = my_tuple print(a)
print(b)
print(rest) # 输出: [3, 4, 5]
2.8 遍历
使⽤ for 遍历元组
my_tuple = (1, 2, 3, 4, 5)
for element in my_tuple:
print(element)
使⽤索引遍历元组
my_tuple = (1, 2, 3, 4, 5)
for i in range(len(my_tuple)):
print(my_tuple[i])
同时遍历索引和元素
my_tuple = (1, 2, 3, 4, 5)
for index, element in enumerate(my_tuple):
print(f"Index {index}: {element}")
四、实验环境
(1)PyCharm 社区版
(2)Anaconda(Python 3.10 以上)
五、实验预习任务
(1)复习元组的定义和基本操作。
(2)查阅元组的切片、解压和拼接方法的使用。
(3)尝试编写简单的元组操作代码。
六、实验过程(实验方案)
(1)收集学生信息
使用循环和 input()`函数逐个输入 20 名同学的个人信息(学号、姓名、
完成题目数、总用时)。
将每位同学信息存储为元组,放入一个列表中。
(2)数据处理和统计
遍历列表,按完成题目数排序(题目数相同则按总用时排序),计算所有同学完成题目的平均数。
计算每位同学的平均用时(总用时除以题目数),并按平均用时排序。
(3)输出结果
根据要求和使用 print 函数和 f-字符串对数据格式化输出
七、实验课后任务
(1)为代码添加详细注释。
(2)尝试使用不同的列表操作方法完成相同的统计任务。
(3)将项目源码提交到指定平台。
八、实验考核
(1)列表定义和操作的正确性。
(2)数据处理和统计的准确性。
(3)代码的可读性和可维护性。
(4)实验报告的完整性和清晰度。
九、实验资源
智慧平台中课件:06 元组.pdf
最新发布