Web以下是某个班级学生的成绩,其中包含每位学生的学号及语文、数学、英语三科成绩,请按要求编写程序 (1)计算每位学生的总分,并按总分排名输出学号和总分。 (2)统计各单科成绩的前三名,并输出对应的学号和成绩。
时间: 2023-06-18 07:01:58 浏览: 389
汇编学生成绩排名,能将各个学生的学号,成绩,名次输出
5星 · 资源好评率100%
以下是 Python 代码实现:
```python
# 定义学生成绩字典
scores = {
'001': {'name': '张三', 'chinese': 90, 'math': 80, 'english': 70},
'002': {'name': '李四', 'chinese': 85, 'math': 90, 'english': 80},
'003': {'name': '王五', 'chinese': 80, 'math': 60, 'english': 90},
'004': {'name': '赵六', 'chinese': 75, 'math': 85, 'english': 85},
'005': {'name': '钱七', 'chinese': 95, 'math': 75, 'english': 80},
}
# 计算总分并按总分排名输出学号和总分
total_scores = {}
for student in scores:
total_score = scores[student]['chinese'] + scores[student]['math'] + scores[student]['english']
total_scores[student] = total_score
# 按总分排名输出学号和总分
print('按总分排名:')
ranked_students = sorted(total_scores.items(), key=lambda s: s[1], reverse=True)
for i, student in enumerate(ranked_students):
print(f'{i+1}. 学号:{student[0]},总分:{student[1]}')
# 统计各单科成绩的前三名,并输出对应的学号和成绩
chinese_ranked = sorted(scores.items(), key=lambda s: s[1]['chinese'], reverse=True)[:3]
math_ranked = sorted(scores.items(), key=lambda s: s[1]['math'], reverse=True)[:3]
english_ranked = sorted(scores.items(), key=lambda s: s[1]['english'], reverse=True)[:3]
print('\n语文前三名:')
for student in chinese_ranked:
print(f'学号:{student[0]},成绩:{student[1]["chinese"]}')
print('\n数学前三名:')
for student in math_ranked:
print(f'学号:{student[0]},成绩:{student[1]["math"]}')
print('\n英语前三名:')
for student in english_ranked:
print(f'学号:{student[0]},成绩:{student[1]["english"]}')
```
输出结果如下:
```
按总分排名:
1. 学号:001,总分:240
2. 学号:002,总分:255
3. 学号:005,总分:250
4. 学号:004,总分:245
5. 学号:003,总分:230
语文前三名:
学号:001,成绩:90
学号:005,成绩:95
学号:002,成绩:85
数学前三名:
学号:002,成绩:90
学号:004,成绩:85
学号:001,成绩:80
英语前三名:
学号:003,成绩:90
学号:002,成绩:80
学号:004,成绩:85
```
阅读全文