用元组、字典与集合打造高效学生信息管理系统
# 学生信息管理系统 ```python # (1) 创建学生信息元组 students = [ ('1001', '张三'), ('1002', '李四'), ('1003', '王五'), ('1004', '赵六') ] # (2) 创建成绩字典 scores = { '1001': [85, 90, 88], '1002': [78, 82, 80], '1003': [92, 88, 95], '1004': [80, 85, 78] } # (3) 查询学生信息功能 def query_student(student_id): # 在元组中查找学生 student_info = None for s in students: if s[0] == student_id: student_info = s break if student_info: # 计算平均分 avg_score = sum(scores[student_id]) / 3 print(f"学生姓名: {student_info[1]}, 平均分: {avg_score:.2f}") else: print("未找到该学号的学生") # (4) 统计课程最高分和最低分 def course_statistics(): # 提取各科成绩 math_scores = [s[0] for s in scores.values()] english_scores = [s[1] for s in scores.values()] python_scores = [s[2] for s in scores.values()] print(f"数学 - 最高分: {max(math_scores)}, 最低分: {min(math_scores)}") print(f"英语 - 最高分: {max(english_scores)}, 最低分: {min(english_scores)}") print(f"Python - 最高分: {max(python_scores)}, 最低分: {min(python_scores)}") # (5) 使用集合排除重复学号 def add_student(): existing_ids = {s[0] for s in students} while True: student_id = input("请输入学号(输入q退出): ") if student_id.lower() == 'q': break if student_id in existing_ids: print("该学号已存在,请重新输入") continue name = input("请输入姓名: ") students.append((student_id, name)) # 初始化成绩 math = int(input("数学成绩: ")) english = int(input("英语成绩: ")) python = int(input("Python成绩: ")) scores[student_id] = [math, english, python] existing_ids.add(student_id) print("学生信息添加成功") # 主菜单 def main(): while True: print("\n学生信息管理系统") print("1. 查询学生信息") print("2. 统计课程成绩") print("3. 添加学生信息") print("4. 退出系统") choice = input("请选择操作: ") if choice == '1': student_id = input("请输入学号: ") query_student(student_id) elif choice == '2': course_statistics() elif choice == '3': add_student() elif choice == '4': print("系统退出") break else: print("无效输入,请重新选择") if __name__ == "__main__": main() ``` ## 代码说明 1. 学生信息元组:使用元组存储学号和姓名,确保学生基本信息不可变。 2. 成绩字典:使用字典存储每个学生的三门课程成绩,键为学号,值为成绩列表。 3. 查询功能:输入学号可查询学生姓名和平均分,平均分计算保留两位小数。 4. 统计功能:分别计算数学、英语和Python课程的最高分和最低分。 5. 添加学生:使用集合检查重复学号,防止重复添加相同学号的学生。 6. 主菜单:提供交互式菜单,方便用户选择不同功能。 这个系统满足了所有要求,并提供了基本的交互界面,可以根据需要进一步扩展功能。 ######[AI问答 | 902点数解答 | 2025-04-20 17:55:36]
- Python开发必备:字符串、列表、元组、字典常用的5个方法大揭秘!(阿里通义 | 325点数解答 | 2023-11-08 00:51:48)259
- 巴黎奥运:中国女排淘汰赛对决土耳其,朱婷成致胜关键!(字节豆包 | 448点数解答 | 2024-08-06 15:59:48)162
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)414
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)405
- Java程序模拟教学选课:林老师开课,58 位学生选课男女比例大揭秘( | 2653点数解答 | 2024-04-02 11:00:16)470
- Java程序设计课程:模拟教学管理,统计58位选课学生男女比重( | 363点数解答 | 2024-04-05 18:31:39)473
- Python:创建文件、统计单词频率并按字母排序输出的实现(GPT | 697点数解答 | 2024-05-30 10:30:24)260
- Python 实现:将 “k1:1| k2:2| k3:3” 字符串转换为字典并输出(讯飞星火 | 178点数解答 | 2024-06-23 21:53:50)239
- R语言实战:用配对样本t检验评估课程强化集训对学生成绩的提升效果(GPT | 630点数解答 | 2024-11-26 22:00:01)321
- Maxscript 替代 C# 字典与 List:数组使用指南及注意要点(字节豆包 | 183点数解答 | 2025-01-13 22:53:17)289
- 巧用 JS 脚本找出集合 [1,2,2,3,3,5] 中的重复元素( | 502点数解答 | 2024-04-01 18:01:38)231
- JS 巧用 Set 数据结构找出集合 [1,2,2,3,3,5] 中的重复元素( | 220点数解答 | 2024-04-01 18:02:44)235