编写一个 Python 程序,可以支持让用户录入学生的姓名和学习成绩,根据学生姓名查询语文成绩,查询已经录入的学生的语文成绩最高分,查询已经录入的学生的语文成绩最低分。
程序写好后,可以使用下面这些 demo 数据测试一下程序是否正确:
plain
王明: 92
李华: 85
张丽: 95
陈宇: 78
赵敏: 89
刘伟: 91
孙婷: 83
周杰: 90
吴静: 88
郑毅: 79
答案
python
# grade_book 是一个字典,用于存储学生姓名和成绩
# 学生姓名作为 key,成绩作为 value
grade_book = {}
# 打印欢迎信息
print("欢迎使用学生成绩管理系统!")
# 无限循环,直到用户选择退出
while True:
# 打印菜单
print("\n请选择您要进行的操作:")
print("1. 录入学生成绩")
print("2. 查询学生成绩")
print("3. 查询最高分")
print("4. 查询最低分")
print("5. 退出系统")
# 获取用户输入
choice = input("请输入选项(1-5):")
if choice == '1':
# --- 录入学生成绩功能 ---
student_name = input("请输入学生姓名:")
# 如果姓名已存在,询问用户是否更新
if student_name in grade_book:
print(f"学生 {student_name} 的成绩已存在,当前成绩为 {grade_book[student_name]}")
overwrite = input("是否更新成绩?(y/n):").lower()
if overwrite != 'y':
print("取消更新。")
continue
# 循环直到输入有效的成绩
while True:
try:
# 将输入的字符串转换为整数
score = int(input("请输入语文成绩:"))
# 将姓名和成绩存入字典
grade_book[student_name] = score
print(f"学生 {student_name} 的成绩 {score} 已成功录入。")
break
except ValueError:
print("输入无效,成绩必须是数字。请重新输入。")
elif choice == '2':
# --- 查询学生成绩功能 ---
student_name = input("请输入要查询的学生姓名:")
# 检查学生姓名是否在字典中
if student_name in grade_book:
# 如果存在,打印成绩
print(f"学生 {student_name} 的语文成绩为 {grade_book[student_name]}。")
else:
# 如果不存在,打印提示信息
print(f"未找到学生 {student_name} 的成绩记录。")
elif choice == '3':
# --- 查询最高分功能 ---
# 检查字典是否为空
if not grade_book:
print("当前没有学生成绩记录。")
# 跳过本次循环的剩余部分,回到菜单
continue
# 使用 max() 函数找到字典值中的最高分
max_score = max(grade_book.values())
# 找到所有成绩是最高分的学生
top_students = [name for name, score in grade_book.items() if score == max_score]
print(f"最高分为 {max_score} 分。获得最高分的学生有:{'、'.join(top_students)}")
elif choice == '4':
# --- 查询最低分功能 ---
# 检查字典是否为空
if not grade_book:
print("当前没有学生成绩记录。")
# 跳过本次循环的剩余部分,回到菜单
continue
# 使用 min() 函数找到字典值中的最低分
min_score = min(grade_book.values())
# 找到所有成绩是最低分的学生
low_students = [name for name, score in grade_book.items() if score == min_score]
print(f"最低分为 {min_score} 分。获得最低分的学生有:{'、'.join(low_students)}")
elif choice == '5':
# --- 退出系统功能 ---
print("感谢使用,再见!")
break
else:
# --- 处理无效输入 ---
print("输入无效,请输入一个介于1到5的数字。")