python 利用合适的数据结构存储学生姓名,利用ndarry数组随机生成班上每个同学的三门成绩,比如Python、math、English。成绩范围为40~100,使用统计函数计算每门课程的成绩的最高分、最低分、平均分、标准差;打印班级三门课程总成绩的最高分、最低分的学生名字。从csv库从csv文件中读出本班学生名字数组.
时间: 2024-03-20 18:39:55 浏览: 88
好的,我理解了你的问题。下面是代码实现:
```python
import numpy as np
import csv
# 从csv文件中读取学生姓名
with open('students.csv', 'r') as file:
reader = csv.reader(file)
students = [row[0] for row in reader]
# 随机生成每个同学的三门成绩
scores = np.random.randint(40, 100, (len(students), 3))
# 统计每门课程的成绩的最高分、最低分、平均分、标准差
print('Python Scores')
print('Max:', np.max(scores[:, 0]))
print('Min:', np.min(scores[:, 0]))
print('Mean:', np.mean(scores[:, 0]))
print('Std:', np.std(scores[:, 0]))
print()
print('Math Scores')
print('Max:', np.max(scores[:, 1]))
print('Min:', np.min(scores[:, 1]))
print('Mean:', np.mean(scores[:, 1]))
print('Std:', np.std(scores[:, 1]))
print()
print('English Scores')
print('Max:', np.max(scores[:, 2]))
print('Min:', np.min(scores[:, 2]))
print('Mean:', np.mean(scores[:, 2]))
print('Std:', np.std(scores[:, 2]))
# 打印班级三门课程总成绩的最高分、最低分的学生名字
total_scores = np.sum(scores, axis=1)
max_idx = np.argmax(total_scores)
min_idx = np.argmin(total_scores)
print()
print('Total Scores Highest:', students[max_idx])
print('Total Scores Lowest:', students[min_idx])
```
需要注意的是,这里假设学生姓名保存在名为 `students.csv` 的文件中,并且每行只有一个学生姓名。如果你的数据不是这种格式,需要修改代码来适应你的数据。
阅读全文