Python使用字典存储学生成绩列表 按输入查询平均分相关问题
问题汇总
- 语法错误:平均分计算逻辑错误,将除法运算放入了
sum()的参数中,sum()要求传入可迭代的序列(如成绩列表),传入单值int会触发int object is not iterable报错 - 变量未定义:调用
update()方法时传入的student变量未提前定义,导致新增John成绩失败,后续查询John时找不到对应键 - 逻辑错误:第二段代码的判断条件
name in StudentGrades.keys() == "Alcott"不符合布尔运算规则,无法正常匹配输入的学生姓名,且仅针对Alcott单独计算了平均分,没有通用适配所有学生的逻辑 - 格式错误:存在括号缺失、缩进不对等基础语法问题,会直接导致代码运行失败
修复后完整实现代码
# 初始化学生成绩字典 StudentGrades = { "Alcott": [5, 9, 7], "Jerry": [3, 5, 2], "David": [8, 9, 8, 9] } # 打印初始学生信息 print("初始学生列表及成绩:") for name, grades in StudentGrades.items(): print(name, grades) # 提前定义要新增的John成绩,解决update报错问题 new_student = {"John": [10]} StudentGrades.update(new_student) print("\n更新后学生列表及成绩:") for name, grades in StudentGrades.items(): print(name, grades) # 循环查询学生成绩与平均分 while True: print("\n请输入要查询的学生姓名:") input_name = input().strip() if input_name in StudentGrades: grade_list = StudentGrades[input_name] average = sum(grade_list) / len(grade_list) print(f"你选择的学生:{input_name}") print(f"成绩列表:{grade_list}") print(f"平均分:{average}") else: print("输入的学生不存在!") break
输出效果说明
- 运行后首先打印初始、更新后的全量学生姓名与对应成绩列表
- 输入已存在的学生姓名,将直接输出该学生的成绩列表与平均分,无需为每个学生单独编写计算逻辑
- 输入不存在的学生姓名后会提示错误并退出循环,符合需求逻辑
内容的提问来源于stack exchange,提问作者Victória Greco
相关产品推荐
相关产品推荐

