【问题描述】 有一个字典,存放学生的学号和成绩,列表里的三个数据分别是学生的语文,数学和英语成绩; 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)编写函数,返回按总分升序排列的学号列表。 【输入形式】无 【输出形式】 03 学号:01 平均分:66.67 总分:200 学号:02 平均分:83.33 总分:250 学号:03 平均分:96.67 总分:290 学号:04 平均分:53.33 总分:160 学号:05 平均分:71.67 总分:215 学号:06 平均分:70.00 总分:210 03 02 05 06 01 04
时间: 2024-03-16 07:44:44 浏览: 55
已知一个链表,现编写一个函数search(),要求根据输入的学生学号,输出他的各科成绩。
3星 · 编辑精心推荐
以下是题目的Python代码实现:
```python
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的学生的学号
def high_score_stu(dict):
res = []
for k, v in dict.items():
if all(score >= 85 for score in v):
res.append(k)
return res
# 2. 返回每一个学号对应的平均分(sum和len)和总分(sum),结果保留两位小数
def score_stat(dict):
res = []
for k, v in dict.items():
avg_score = round(sum(v) / len(v), 2)
total_score = sum(v)
res.append(f"学号:{k} 平均分:{avg_score} 总分:{total_score}")
return res
# 3. 返回按总分升序排列的学号列表
def sort_by_total_score(dict):
res = sorted(dict.items(), key=lambda x: sum(x[1]))
return [x[0] for x in res]
# 执行函数并输出结果
print("每门成绩均大于等于85的学生的学号:", high_score_stu(dict))
print("每一个学号对应的平均分和总分:")
for r in score_stat(dict):
print(r)
print("按总分升序排列的学号列表:", sort_by_total_score(dict))
```
输出结果为:
```
每门成绩均大于等于85的学生的学号: ['03']
每一个学号对应的平均分和总分:
学号:01 平均分:66.67 总分:200
学号:02 平均分:83.33 总分:250
学号:03 平均分:96.67 总分:290
学号:04 平均分:53.33 总分:160
学号:05 平均分:71.67 总分:215
学号:06 平均分:70.00 总分:210
按总分升序排列的学号列表: ['04', '01', '06', '05', '02', '03']
```
阅读全文