用python编写假设某学校所有课程每学期允许多次考试,学生可随时参加考试,系统自动将每次成绩添加到Excel文件(包含3列:姓名,课程,成绩)中,现期末要求统计所有学生每门课程的最高成绩。 编写程序,模拟生成若干同学的成绩并写入Excel文件,其中学生姓名和课程名称均可重复,也就是允许出现同一门课程的多次成绩,最后统计所有学生每门课程的最高成绩,并写入新的Excel文件。
时间: 2024-01-02 21:02:26 浏览: 189
好的,这是一个比较实际的问题。首先,我们需要安装 pyexcel 模块和 openpyxl 模块来处理 Excel 文件。可以使用 pip install 命令来安装这两个模块。
然后,我们需要模拟生成一些学生的成绩,并将它们写入 Excel 文件中。这里我使用 random 模块来生成随机成绩。以下是一个简单的代码示例:
```python
import random
import pyexcel
from openpyxl import Workbook
# 生成随机成绩
scores = []
for i in range(10):
name = f"Student{i+1}"
for j in range(5):
course = f"Course{j+1}"
score = random.randint(60, 100)
scores.append([name, course, score])
# 将成绩写入 Excel 文件
pyexcel.save_as(array=scores, dest_file_name="scores.xlsx")
```
这段代码将生成 10 个学生的 5 门课程成绩,并将它们写入名为 "scores.xlsx" 的 Excel 文件中。
接下来,我们需要统计每个学生每门课程的最高成绩。这里我使用 pandas 模块来处理 Excel 文件。以下是代码示例:
```python
import pandas as pd
from openpyxl import Workbook
# 读取 Excel 文件
df = pd.read_excel("scores.xlsx", header=None, names=["name", "course", "score"])
# 按照姓名和课程分组,取每组最大值
max_scores = df.groupby(["name", "course"]).max()
# 将最大值写入 Excel 文件
max_scores.to_excel("max_scores.xlsx")
```
这段代码将读取刚才生成的 Excel 文件,按照姓名和课程分组,取每组最大值,并将它们写入名为 "max_scores.xlsx" 的 Excel 文件中。
完整代码如下:
```python
import random
import pyexcel
import pandas as pd
# 生成随机成绩
scores = []
for i in range(10):
name = f"Student{i+1}"
for j in range(5):
course = f"Course{j+1}"
score = random.randint(60, 100)
scores.append([name, course, score])
# 将成绩写入 Excel 文件
pyexcel.save_as(array=scores, dest_file_name="scores.xlsx")
# 读取 Excel 文件
df = pd.read_excel("scores.xlsx", header=None, names=["name", "course", "score"])
# 按照姓名和课程分组,取每组最大值
max_scores = df.groupby(["name", "course"]).max()
# 将最大值写入 Excel 文件
max_scores.to_excel("max_scores.xlsx")
```
这段代码将生成随机成绩,并将它们写入 Excel 文件中,然后统计每个学生每门课程的最高成绩,并将它们写入新的 Excel 文件中。
阅读全文