统计功能:统计出平均分最高的学生、不及格学生信息及人数、平均分在80分以上的学生信息及人数。
时间: 2023-12-29 19:05:40 浏览: 123
学生分数的统计,统计某分数的学生人数
好的,以下是一个示例程序,可以实现您的要求:
```python
class Student:
def __init__(self, name, grades):
self.name = name
self.grades = grades
self.average = sum(self.grades) / len(self.grades)
def __repr__(self):
return f"{self.name}: {self.average:.2f}"
students = [
Student("Alice", [90, 85, 95]),
Student("Bob", [80, 75, 70]),
Student("Charlie", [95, 90, 100]),
Student("David", [60, 65, 55]),
Student("Eve", [85, 90, 80]),
]
# 平均分最高的学生
highest_average_student = max(students, key=lambda student: student.average)
print(f"平均分最高的学生:{highest_average_student.name},平均分:{highest_average_student.average:.2f}")
# 不及格的学生及人数
fail_students = [student for student in students if any(grade < 60 for grade in student.grades)]
print(f"不及格的学生人数:{len(fail_students)}")
for student in fail_students:
print(f"{student.name},平均分:{student.average:.2f}")
# 平均分在80分以上的学生及人数
good_students = [student for student in students if all(grade >= 80 for grade in student.grades)]
print(f"平均分在80分以上的学生人数:{len(good_students)}")
for student in good_students:
print(f"{student.name},平均分:{student.average:.2f}")
```
这个程序中,我们同样定义了一个 `Student` 类来存储学生信息,包括姓名、分数和平均分。然后我们创建了一个学生列表,并分别实现了三个要求:
- 使用 `max` 函数找出平均分最高的学生,并打印出其姓名和平均分。
- 使用列表推导式和 `any` 函数找出不及格的学生,并打印出其姓名和平均分,以及不及格学生的总人数。
- 使用列表推导式和 `all` 函数找出平均分在80分以上的学生,并打印出其姓名和平均分,以及符合条件的学生的总人数。
注意,在程序中,我们使用了 `:.2f` 格式化字符串,以保留小数点后两位。
阅读全文