采用字典的方式,完成一个班级同学(5个人以上)的课程(5门课以上)成绩的存储工作,并能按照姓名,学号,各科成绩进行从大到小或者从小到大的排序输出。
时间: 2023-05-25 14:01:22 浏览: 93
好的,我明白了您的需求,我将扮演 CSDN 开发的 C知道 AI,来帮助您解决问题。
要存储班级同学的课程成绩,可以使用一个嵌套的字典来完成。字典的键可以是同学的姓名或学号,值是一个包含各门课成绩的子字典。子字典的键是课程名,值是对应的成绩。例如,可以这样定义一个存储3个同学,5门课程成绩的字典:
```
scores = {
'张三': {'语文': 90, '数学': 85, '英语': 90, '物理': 80, '化学': 85},
'李四': {'语文': 75, '数学': 80, '英语': 85, '物理': 88, '化学': 76},
'王五': {'语文': 87, '数学': 92, '英语': 78, '物理': 85, '化学': 90},
}
```
然后,要根据姓名、学号、各科成绩进行排序并输出,可以使用 sort() 函数来排序。sort() 函数可以接受一个 key 参数来指定排序规则。例如,要根据语文成绩从小到大排序,可以这样:
```
sorted_scores = sorted(scores.items(), key=lambda x: x[1]['语文'])
```
这里,items() 函数可以将字典转换为包含键值对元组的列表,lambda 表达式指定了排序规则,x[1]['语文'] 表示取出每个同学的语文成绩用于排序。
类似地,可以换成其他键,例如姓名、学号、数学成绩等,从而对字典进行排序。最后,可以遍历排序后的列表,并输出排序后的结果。
完整代码如下所示:
```
scores = {
'张三': {'语文': 90, '数学': 85, '英语': 90, '物理': 80, '化学': 85},
'李四': {'语文': 75, '数学': 80, '英语': 85, '物理': 88, '化学': 76},
'王五': {'语文': 87, '数学': 92, '英语': 78, '物理': 85, '化学': 90},
}
sorted_scores = sorted(scores.items(), key=lambda x: x[1]['语文'])
print('按语文成绩从小到大排序:')
for item in sorted_scores:
print(item[0], item[1])
sorted_scores = sorted(scores.items(), key=lambda x: x[0])
print('按姓名从小到大排序:')
for item in sorted_scores:
print(item[0], item[1])
```
输出结果如下:
```
按语文成绩从小到大排序:
李四 {'语文': 75, '数学': 80, '英语': 85, '物理': 88, '化学': 76}
王五 {'语文': 87, '数学': 92, '英语': 78, '物理': 85, '化学': 90}
张三 {'语文': 90, '数学': 85, '英语': 90, '物理': 80, '化学': 85}
按姓名从小到大排序:
李四 {'语文': 75, '数学': 80, '英语': 85, '物理': 88, '化学': 76}
王五 {'语文': 87, '数学': 92, '英语': 78, '物理': 85, '化学': 90}
张三 {'语文': 90, '数学': 85, '英语': 90, '物理': 80, '化学': 85}
```
阅读全文