现有一个字典存放着学生的学号和成绩。成绩列表里的 3个数据分别是学生的语文、数学和英语成绩: dict=('01':[67,88,45],02':[97,68,85],03:[97,98,95],04':[67,48,45],05:[82,58,75],06':[96,49,651} 完成以下操作: 编写函数,返回每门成绩均大于等于85的学生的学号 编写函数,返回每一个学号对应的平均分(sum 和 len)和总分(sum),结果保留两位2券 3编写函数,返回按总分升序排列的学号列表。
时间: 2024-02-17 11:00:37 浏览: 104
好的,我来回答你的问题。
1. 编写函数,返回每门成绩均大于等于85的学生的学号
```python
def high_scores(students):
high_scorers = []
for student, scores in students.items():
if all(score >= 85 for score in scores):
high_scorers.append(student)
return high_scorers
```
在上面的代码中,我们定义了一个名为 `high_scores` 的函数,它接受一个字典 `students`,其中每个键代表一个学生的学号,每个值是该学生的成绩列表。我们通过 `for` 循环遍历字典中的每一个键值对,将学生的学号保存在变量 `student` 中,将学生的成绩列表保存在变量 `scores` 中。然后,我们使用 `all` 函数判断该学生的每门成绩是否都大于等于 85 分,如果是,就将该学生的学号保存在列表 `high_scorers` 中。最后,我们返回这个列表。
2. 编写函数,返回每一个学号对应的平均分(sum 和 len)和总分(sum),结果保留两位小数
```python
def calc_scores(students):
scores_dict = {}
for student, scores in students.items():
total_score = sum(scores)
avg_score = round(total_score / len(scores), 2)
scores_dict[student] = {'total_score': total_score, 'avg_score': avg_score}
return scores_dict
```
在上面的代码中,我们定义了一个名为 `calc_scores` 的函数,它接受一个字典 `students`,其中每个键代表一个学生的学号,每个值是该学生的成绩列表。我们通过 `for` 循环遍历字典中的每一个键值对,将学生的学号保存在变量 `student` 中,将学生的成绩列表保存在变量 `scores` 中。然后,我们使用 `sum` 函数计算该学生的总分,使用 `len` 函数计算该学生的成绩数,然后计算该学生的平均分,并将结果保存在一个字典中,字典的键是学生的学号,值是一个包含该学生总分和平均分的字典。最后,我们返回这个字典。
3. 编写函数,返回按总分升序排列的学号列表
```python
def sort_scores(students):
return sorted(students, key=lambda x: sum(students[x]))
```
在上面的代码中,我们定义了一个名为 `sort_scores` 的函数,它接受一个字典 `students`,其中每个键代表一个学生的学号,每个值是该学生的成绩列表。我们使用 `sorted` 函数对学生的学号列表进行排序,排序的依据是每个学生的总分。我们通过 `lambda` 表达式指定排序的关键字,即每个学生的成绩总分,然后返回排序后的学号列表。
希望我的回答能够帮助到你!
阅读全文