采用字典的方式,完成一个班级同学(5个人以上)的课程(5门课以上)成绩的存储工作,并能按照姓名,学号,各科成绩进行从大到小或者从小到大的排序输出。
时间: 2024-02-19 07:58:46 浏览: 30
好的,我可以帮你实现这个功能。首先,我们需要使用 Python 中的字典数据类型来存储班级同学的成绩信息。下面是一个示例代码:
```python
scores = {
"001": {"name": "张三", "math": 80, "english": 75, "chinese": 90, "physics": 85},
"002": {"name": "李四", "math": 90, "english": 85, "chinese": 95, "physics": 80},
"003": {"name": "王五", "math": 70, "english": 80, "chinese": 75, "physics": 90},
"004": {"name": "赵六", "math": 85, "english": 90, "chinese": 80, "physics": 95},
"005": {"name": "钱七", "math": 95, "english": 95, "chinese": 85, "physics": 70}
}
```
其中,每个同学的信息以一个字典存储,学号作为字典的键,姓名和各科成绩作为字典的值。
接下来,我们可以定义一个函数,实现按照姓名、学号、各科成绩进行排序输出的功能。下面是一个示例代码:
```python
def sort_scores(scores, by="name", reverse=False):
# by 参数表示按照什么进行排序,默认按照姓名排序
# reverse 参数表示是否按照降序排序,默认按照升序排序
sorted_scores = sorted(scores.items(), key=lambda x: x[1][by], reverse=reverse)
# sorted 函数返回一个元素为 (key, value) 的列表,需要转换为字典形式
return dict(sorted_scores)
```
我们可以通过调用这个函数来实现排序输出。例如,按照姓名升序排序输出:
```python
print(sort_scores(scores, by="name"))
```
输出结果:
```
{
'001': {'name': '张三', 'math': 80, 'english': 75, 'chinese': 90, 'physics': 85},
'002': {'name': '李四', 'math': 90, 'english': 85, 'chinese': 95, 'physics': 80},
'005': {'name': '钱七', 'math': 95, 'english': 95, 'chinese': 85, 'physics': 70},
'004': {'name': '赵六', 'math': 85, 'english': 90, 'chinese': 80, 'physics': 95},
'003': {'name': '王五', 'math': 70, 'english': 80, 'chinese': 75, 'physics': 90}
}
```
按照学号降序排序输出:
```python
print(sort_scores(scores, by="id", reverse=True))
```
输出结果:
```
{
'005': {'name': '钱七', 'math': 95, 'english': 95, 'chinese': 85, 'physics': 70},
'004': {'name': '赵六', 'math': 85, 'english': 90, 'chinese': 80, 'physics': 95},
'003': {'name': '王五', 'math': 70, 'english': 80, 'chinese': 75, 'physics': 90},
'002': {'name': '李四', 'math': 90, 'english': 85, 'chinese': 95, 'physics': 80},
'001': {'name': '张三', 'math': 80, 'english': 75, 'chinese': 90, 'physics': 85}
}
```
按照数学成绩降序排序输出:
```python
print(sort_scores(scores, by="math", reverse=True))
```
输出结果:
```
{
'005': {'name': '钱七', 'math': 95, 'english': 95, 'chinese': 85, 'physics': 70},
'002': {'name': '李四', 'math': 90, 'english': 85, 'chinese': 95, 'physics': 80},
'004': {'name': '赵六', 'math': 85, 'english': 90, 'chinese': 80, 'physics': 95},
'001': {'name': '张三', 'math': 80, 'english': 75, 'chinese': 90, 'physics': 85},
'003': {'name': '王五', 'math': 70, 'english': 80, 'chinese': 75, 'physics': 90}
}
```
希望以上代码能够帮助你完成题目要求。
阅读全文