现在有一个字典score,键值对(key:value)表示学号和分数,例如:score={20174021:55,20174022:97,20174023:77,20174024:84} 请编写函数stats,该函数实现分数从高到低的学号排名,同时计算分数的平均值,最后统计所有不及格的学号以及不及格人数的比例。要求该函数返回4个值,第1个值是按分数排序后的学号序列,第2个值是分数的平均值(保留2位小数),第3个值是所有不及格的学号序列,第4个值是不及格人数所占总人数的比例(保留2位小数)
时间: 2024-02-06 09:10:24 浏览: 125
可以使用字典的items()方法将score字典转换为键值对列表,然后使用sorted()函数按照分数从高到低排序,最后遍历列表获取学号序列、计算平均值、统计不及格人数和比例。
具体实现如下:
```python
def stats(score):
# 将字典转换为键值对列表,并按照分数从高到低排序
sorted_score = sorted(score.items(), key=lambda x: x[1], reverse=True)
# 获取学号序列
id_list = [x[0] for x in sorted_score]
# 计算平均值
avg_score = round(sum(score.values()) / len(score), 2)
# 统计不及格的学号序列和人数比例
fail_list = [x[0] for x in score.items() if x[1] < 60]
fail_ratio = round(len(fail_list) / len(score), 2)
# 返回结果
return id_list, avg_score, fail_list, fail_ratio
# 测试
score = {20174021:55,20174022:97,20174023:77,20174024:84}
result = stats(score)
print(result)
```
运行结果如下:
```
([20174022, 20174024, 20174023, 20174021], 78.25, [20174021], 0.25)
```
阅读全文