python用随机的方式生成5个学生3门课程的成绩 1. 统计每个学生的平均分 2. 统计每门课的最高分、最低分和标准差 3. 按平均分从高到低展示学生信息
时间: 2024-09-30 13:10:59 浏览: 27
在Python中,我们可以使用`random`模块和字典数据结构来模拟这个场景。首先,我们将创建一个函数,用于随机生成学生的成绩。然后,我们会分别计算每个学生的平均分、每门课程的统计指标,并按平均分排序。
```python
import random
# 定义学生和课程
students = {}
courses = ['数学', '英语', '科学']
# 生成5个学生,每门课程3个分数
for _ in range(5):
student_id = f"学生{len(students)+1}"
students[student_id] = {course: [random.randint(60, 100) for _ in range(3)] for course in courses}
# 计算每个学生的平均分
averages = {student: sum(scores.values()) / len(scores) for student, scores in students.items()}
# 计算每门课程的最高分、最低分和标准差
course_stats = {}
for course in courses:
grades = [score for student_scores in students.values() for score in student_scores.get(course, [])]
max_score, min_score = max(grades), min(grades)
std_dev = (sum((x - max_score) ** 2 for x in grades) / len(grades)) ** 0.5
course_stats[course] = {'最高分': max_score, '最低分': min_score, '标准差': std_dev}
# 按平均分降序排列学生
sorted_students = sorted(averages.items(), key=lambda item: item[1], reverse=True)
# 输出结果
print("每个学生的平均分:")
for student, avg in sorted_students:
print(f"{student}: {avg}")
print("\n每门课的最高分、最低分和标准差:")
for course, stats in course_stats.items():
print(f"{course}: 最高分={stats['最高分']}, 最低分={stats['最低分']}, 标准差={stats['标准差']}")
print("\n按平均分从高到低的学生信息:")
for _, scores in sorted_students:
for student, course_scores in students.items():
print(f"{student}: {course_scores}")
```
阅读全文