有一个班4个学生,5门课程。 求第n门课程的平均分(1<=n<=5); 找出有m门以上课程不及格的学生(1<=m<=5),输出他们的学号和全部课程成绩及平均成绩; 找出平均成绩在90分以上或全部课程成绩在85分以上的学生,分别编写3个函数实现以上3个要求
时间: 2024-05-13 18:20:37 浏览: 79
1. 求第n门课程的平均分函数:
```python
def avg_score_by_subject(students, subject_num):
"""
:param students: 学生列表,每个学生是一个字典,包含5个科目的成绩
:param subject_num: 第n门课程的编号,从1开始
:return: 第n门课程的平均分
"""
total_score = 0
for s in students:
total_score += s['score'][subject_num - 1]
return total_score / len(students)
```
2. 找出有m门以上课程不及格的学生函数:
```python
def find_failed_students(students, m):
"""
:param students: 学生列表,每个学生是一个字典,包含5个科目的成绩
:param m: 不及格门数的阈值
:return: 不及格门数大于等于m的学生列表,每个学生包含学号、全部课程成绩、平均成绩
"""
failed_students = []
for s in students:
fail_num = 0
for score in s['score']:
if score < 60:
fail_num += 1
if fail_num >= m:
s_dict = {'id': s['id'], 'score': s['score'], 'avg_score': sum(s['score']) / 5}
failed_students.append(s_dict)
return failed_students
```
3. 找出平均成绩在90分以上或全部课程成绩在85分以上的学生函数:
```python
def find_excellent_students(students):
"""
:param students: 学生列表,每个学生是一个字典,包含5个科目的成绩
:return: 平均成绩在90分以上或全部课程成绩在85分以上的学生列表,每个学生包含学号、全部课程成绩、平均成绩
"""
excellent_students = []
for s in students:
avg_score = sum(s['score']) / 5
if avg_score >= 90 or min(s['score']) >= 85:
s_dict = {'id': s['id'], 'score': s['score'], 'avg_score': avg_score}
excellent_students.append(s_dict)
return excellent_students
```
阅读全文