[Python 基础课程]学生语文成绩录入和查询需求

编写一个 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的数字。")