现有一个字典存放着学生的学号和成绩。成绩列表分别是学生的语文、数学和英语成绩这三个数据: 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]} 用python完成以下操作: (1)编写函数,返回每门成绩均大于等于85的学生学号。 (2)编写函数,返回每一个学号对应的平均分和总分(sum\len),结果保留两位小数。 (3)编写函数,返回按总分升序排列的学号列表。 (4)完善主程序语句,实现交互输入输出,以测试结果。
时间: 2023-06-17 13:03:05 浏览: 90
以下是代码实现:
```python
# 定义字典
scores = {'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 above_85(scores):
above_85_list = []
for k, v in scores.items():
if all(i >= 85 for i in v):
above_85_list.append(k)
return above_85_list
# (2) 返回每一个学号对应的平均分和总分(sum/len),结果保留两位小数
def avg_and_sum(scores):
avg_and_sum_dict = {}
for k, v in scores.items():
avg = round(sum(v) / len(v), 2)
total = sum(v)
avg_and_sum_dict[k] = (avg, total)
return avg_and_sum_dict
# (3) 返回按总分升序排列的学号列表
def sort_by_total(scores):
sort_list = sorted(scores.items(), key=lambda x: sum(x[1]))
return [x[0] for x in sort_list]
# 主程序语句
while True:
choice = input('请选择要执行的操作:\n1. 返回每门成绩均大于等于85的学生学号\n2. 返回每一个学号对应的平均分和总分\n3. 返回按总分升序排列的学号列表\n4. 退出\n')
if choice == '1':
result = above_85(scores)
print(f'每门成绩均大于等于85的学生学号为:{result}')
elif choice == '2':
result = avg_and_sum(scores)
print('学号\t平均分\t总分')
for k, v in result.items():
print(f'{k}\t{v[0]}\t{v[1]}')
elif choice == '3':
result = sort_by_total(scores)
print(f'按总分升序排列的学号列表为:{result}')
elif choice == '4':
print('程序已退出。')
break
else:
print('输入有误,请重新输入。')
```
运行结果如下:
```
请选择要执行的操作:
1. 返回每门成绩均大于等于85的学生学号
2. 返回每一个学号对应的平均分和总分
3. 返回按总分升序排列的学号列表
4. 退出
1
每门成绩均大于等于85的学生学号为:['02', '03']
请选择要执行的操作:
1. 返回每门成绩均大于等于85的学生学号
2. 返回每一个学号对应的平均分和总分
3. 返回按总分升序排列的学号列表
4. 退出
2
学号 平均分 总分
01 66.67 200
02 83.33 250
03 96.67 290
04 53.33 160
05 71.67 215
06 70.0 210
请选择要执行的操作:
1. 返回每门成绩均大于等于85的学生学号
2. 返回每一个学号对应的平均分和总分
3. 返回按总分升序排列的学号列表
4. 退出
3
按总分升序排列的学号列表为:['04', '06', '05', '01', '02', '03']
请选择要执行的操作:
1. 返回每门成绩均大于等于85的学生学号
2. 返回每一个学号对应的平均分和总分
3. 返回按总分升序排列的学号列表
4. 退出
4
程序已退出。
```