后端开发
·2 天前Day 10
🧭行动:对所学习的数据容器进行实战综合运用
🤓体会:做了一个简易教务管理系统,其中使用了马上要学习的函数相关知识,不使用的话可能会导致代码过于冗长,降低可读性。
🧑💻代码:
# 初始化:外层字典 key=学生姓名,value=成绩字典
students = {}
def subject_stat(subject_name, score_name_list):
"""统计科目:最高分、最低分、平均分、对应学生姓名"""
scores = [item[0] for item in score_name_list]
max_score = max(scores)
min_score = min(scores)
avg_score = sum(scores)/len(scores)
max_names = [item[1] for item in score_name_list if item[0]==max_score]
min_names = [item[1] for item in score_name_list if item[0]==min_score]
print(f"{subject_name}:")
print(f"\t最高分:{max_score},学生:{','.join(max_names)}")
print(f"\t最低分:{min_score},学生:{','.join(min_names)}")
print(f"\t平均分:{avg_score:.2f}")
def stat_class():
"""6.统计班级成绩"""
if not students:
print("暂无学生数据,无法统计!")
return
# 只这里用到 .items(),其余逻辑全部复用
chinese_list = [(val["chinese"], key) for key, val in students.items()]
math_list = [(val["math"], key) for key, val in students.items()]
english_list = [(val["english"], key) for key, val in students.items()]
print("====班级成绩统计====")
subject_stat("语文", chinese_list)
subject_stat("数学", math_list)
subject_stat("英语", english_list)
# 主菜单
while True:
print("""
========教务管理系统========
1.添加学生信息
2.修改学生信息
3.删除学生信息
4.查询学生信息
5.列出所有学生
6.统计班级成绩
7.退出系统
============================""")
op = input("请输入功能选项:")
if op == "1":
name = input("输入学生姓名:")
if name in students:
print("该学生已存在!")
else:
c = int(input("语文成绩:"))
m = int(input("数学成绩:"))
e = int(input("英语成绩:"))
students[name] = {"chinese":c,"math":m,"english":e}
print("添加成功")
elif op == "2":
name = input("输入要修改的学生姓名:")
if name in students:
students[name]["chinese"] = int(input("输入新语文成绩:"))
students[name]["math"] = int(input("输入新数学成绩:"))
students[name]["english"] = int(input("输入新英语成绩:"))
print("修改完成")
else:
print("没有该学生")
elif op == "3":
name = input("输入要删除的学生姓名:")
if name in students:
del students[name]
print("删除成功")
else:
print("没有该学生")
elif op == "4":
name = input("输入查询学生姓名:")
if name in students:
s = students[name]
print(f"姓名:{name} 语文:{s['chinese']} 数学:{s['math']} 英语:{s['english']}")
else:
print("查无此人")
elif op == "5":
if not students:
print("暂无学生")
for name,score in students.items():
print(f"姓名:{name} 语文:{score['chinese']} 数学:{score['math']} 英语:{score['english']}")
elif op == "6":
stat_class()
elif op == "7":
print("系统退出")
break
else:
print("输入选项无效,请重新输入!")
4
1
分享
操作
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
