【问题描述】 有一个字典,存放学生的学号和成绩,列表里的三个数据分别是学生的语文,数学和英语成绩; dict={'01':[67,88,45],'02':[97,68,85],'03':[97,98,95],'04':[67,48,45],'05':[82,58,75],'06':[96,49,65]} 完成以下操作: 1)编写函数,返回每门成绩均大于等于85的学生的学号。 2)编写函数,返回每一个学号对应的平均分(sum和len)和总分(sum),结果保留两位小数。 3)编写函数,返回按总分升序排列的学号列表
时间: 2024-03-16 14:44:36 浏览: 129
好的,我来依次回答你的问题。
1. 返回每门成绩均大于等于85的学生的学号
可以使用字典的items()方法来遍历字典,然后再判断每个学生的成绩是否均大于等于85。可以这样写:
```python
def find_good_students(dict):
good_students = []
for stu_id, scores in dict.items():
if all(score >= 85 for score in scores):
good_students.append(stu_id)
return good_students
```
2. 返回每一个学号对应的平均分和总分
可以使用列表推导式来计算每个学生的平均分和总分,然后存储到一个字典中。可以这样写:
```python
def calc_score_stats(dict):
stats = {}
for stu_id, scores in dict.items():
avg_score = round(sum(scores) / len(scores), 2)
total_score = sum(scores)
stats[stu_id] = (avg_score, total_score)
return stats
```
3. 返回按总分升序排列的学号列表
可以使用字典的items()方法来遍历字典,然后使用sorted()函数来按总分排序。可以这样写:
```python
def sort_students_by_score(dict):
sorted_students = sorted(dict.items(), key=lambda x: x[1][1])
return [stu[0] for stu in sorted_students]
```
完整代码如下:
阅读全文