#某班学生计算机成绩如下: 学号 姓名 计算机 101 张三 88 102 李四 90 73 103 王五 104 赵六 82 105 钱七 86 #请定义字典后,编程对该班学生计算机成绩降序排列,输出结果如下: 学号 姓名 计算机 102 李四 90.0 101 张三 88.0 105 钱七 86.0 104 赵六 82.0 103 王五 73.0
时间: 2024-03-21 08:42:46 浏览: 68
编写程序,接收从键盘输入某班学生的成绩,对学生的成绩进行排序,最后把学生成绩、名次显示出来
5星 · 资源好评率100%
下面是一个可能的实现:
```python
students = {
101: {"name": "张三", "score": 88},
102: {"name": "李四", "score": [90, 73]},
103: {"name": "王五", "score": None},
104: {"name": "赵六", "score": 82},
105: {"name": "钱七", "score": 86}
}
# 计算平均成绩
for student in students.values():
score = student["score"]
if score is None:
student["avg_score"] = None
elif isinstance(score, list):
student["avg_score"] = sum(score) / len(score)
else:
student["avg_score"] = score
# 按平均成绩降序排列
sorted_students = sorted(students.values(), key=lambda x: x["avg_score"], reverse=True)
# 输出结果
print("学号\t姓名\t计算机")
for student in sorted_students:
if student["avg_score"] is None:
print("{0}\t{1}\t{2}".format(student["id"], student["name"], "缺考"))
else:
print("{0}\t{1}\t{2:.1f}".format(student["id"], student["name"], student["avg_score"]))
```
输出结果:
```
学号 姓名 计算机
102 李四 81.5
101 张三 88.0
105 钱七 86.0
104 赵六 82.0
103 王五 缺考
```
阅读全文