class Students:
def __init__(self, number):
self.number = number
self.student = [None] * number # 固定容量的学生列表
self.actual = 0 # 当前学生数量
def is_full(self):
return self.actual == self.number
def is_empty(self):
return self.actual == 0
def show(self):
if self.is_empty():
print("没有学生")
return False
for i in range(self.actual):
print(self.student[i])
def add_stu(self, name, id, age, grade):
if self.is_full():
print("增加失败,班级已满")
return False
self.student[self.actual] = {'name': name, 'id': id, 'age': age, 'grade': grade}
self.actual += 1
def del_stu_id(self, idex):
if self.is_empty() or idex < 0 or idex >= self.actual:
print("删除失败,索引无效或班级为空")
return False
# 删除学生并移动后续学生
for i in range(idex, self.actual - 1):
self.student[i] = self.student[i + 1]
self.student[self.actual - 1] = None # 清空最后一个位置
self.actual -= 1
print(f"索引 {idex} 的学生已删除")
def insert_stu(self, idex, name, id, age, grade):
if self.is_full() or idex < 0 or idex > self.actual:
print("插入失败")
return False
# 从后向前移动学生数据
for i in range(self.actual, idex, -1):
self.student[i] = self.student[i - 1]
# 插入学生
self.student[idex] = {'name': name, 'id': id, 'age': age, 'grade': grade}
self.actual += 1
print(f"学生已插入到索引 {idex}")
def update_stu_by_id(self, id, new_data):
for i in range(self.actual):
if self.student[i]['id'] == id:
# 更新学生数据
self.student[i].update(new_data)
print(f"学生 ID {id} 的信息已更新")
return True
print(f"未找到 ID 为 {id} 的学生")
return False
if __name__ == '__main__':
# 初始化班级容量为 5
classroom = Students(5)
# 添加初始学生
classroom.add_stu("张三", 1, 16, 90)
classroom.add_stu("李四", 2, 17, 85)
classroom.add_stu("王五", 3, 16, 88)
# 显示当前学生列表
print("初始学生列表:")
classroom.show()
# 测试插入学生
classroom.insert_stu(1, "赵六", 4, 18, 92)
# 显示插入后的学生列表
print("\n插入学生后:")
classroom.show()
# 测试删除学生
classroom.del_stu_id(2)
# 显示删除后的学生列表
print("\n删除学生后:")
classroom.show()
# 测试更新学生信息
classroom.update_stu_by_id(1, {'age': 17, 'grade': 95})
# 显示更新后的学生列表
print("\n更新学生信息后:")
classroom.show()
# 测试边界情况:删除不存在的学生
classroom.del_stu_id(10) # 无效索引
# 测试边界情况:插入超出容量的学生
classroom.add_stu("超载学生", 5, 19, 70)
classroom.add_stu("另一个学生", 6, 20, 75)
python数据结构篇:0基础带你入门python之顺序表
于 2024-11-21 21:01:00 首次发布