【问题描述】 有一个字典,存放学生的学号和成绩,列表里的三个数据分别是学生的语文,数学和英语成绩; 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 20:44:32 浏览: 59
【问题回答】
1. 返回每门成绩均大于等于85的学生的学号。
```python
def excellent_students(dict):
excellent = []
for key, value in dict.items():
if all(score >= 85 for score in value):
excellent.append(key)
return excellent
```
2. 返回每一个学号对应的平均分(sum和len)和总分(sum),结果保留两位小数。
```python
def avg_and_sum(dict):
result = {}
for key, value in dict.items():
avg = round(sum(value)/len(value), 2)
total = round(sum(value), 2)
result[key] = (avg, total)
return result
```
3. 返回按总分升序排列的学号列表。
```python
def sort_by_sum(dict):
sorted_list = sorted(dict.items(), key=lambda x: sum(x[1]), reverse=False)
return [x[0] for x in sorted_list]
```
完整代码如下:
```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]}
def excellent_students(dict):
excellent = []
for key, value in dict.items():
if all(score >= 85 for score in value):
excellent.append(key)
return excellent
def avg_and_sum(dict):
result = {}
for key, value in dict.items():
avg = round(sum(value)/len(value), 2)
total = round(sum(value), 2)
result[key] = (avg, total)
return result
def sort_by_sum(dict):
sorted_list = sorted(dict.items(), key=lambda x: sum(x[1]), reverse=False)
return [x[0] for x in sorted_list]
if __name__ == '__main__':
print(excellent_students(dict)) # ['03']
print(avg_and_sum(dict)) # {'01': (66.67, 200), '02': (83.33, 250), '03': (96.67, 290), '04': (53.33, 160), '05': (71.67, 215), '06': (70.0, 210)}
print(sort_by_sum(dict)) # ['04', '01', '05', '06', '02', '03']
```
阅读全文