python读取学生成绩单数据文件 scoredata.csv,单独再加一列,平均分大于80分 及以上的为优良,60 分以下的为不合格,60 分及以上到 80 分为合格,并求出优良、 不合格、合格所占比例。
时间: 2024-03-26 10:41:39 浏览: 17
好的,以下是Python代码实现:
```python
import csv
# 读取 scoredata.csv 文件
with open('scoredata.csv', 'r', encoding='utf-8') as f:
reader = csv.reader(f)
rows = [row for row in reader]
# 计算平均分并添加新列
header = rows[0]
header.append('成绩评定')
for row in rows[1:]:
total = sum([float(x) for x in row[1:]])
avg = total / (len(row) - 1)
if avg >= 80:
row.append('优良')
elif avg < 60:
row.append('不合格')
else:
row.append('合格')
# 将结果保存到新文件 output.csv 中
with open('output.csv', 'w', encoding='utf-8', newline='') as f:
writer = csv.writer(f)
writer.writerows(rows)
# 统计优良、不合格、合格所占比例
total = len(rows) - 1 # 减去标题行
excellent = sum(1 for row in rows[1:] if row[-1] == '优良')
passing = sum(1 for row in rows[1:] if row[-1] == '合格')
fail = sum(1 for row in rows[1:] if row[-1] == '不合格')
print(f'优良: {excellent}, 占比: {round(excellent / total * 100, 2)}%')
print(f'合格: {passing}, 占比: {round(passing / total * 100, 2)}%')
print(f'不合格: {fail}, 占比: {round(fail / total * 100, 2)}%')
```
以上代码使用 Python 的 csv 模块读取 scoredata.csv 文件,计算平均分并添加新列,最后将结果保存到新文件中。统计优良、不合格、合格所占比例的方法使用了 Python 的内置函数 sum 和生成器表达式,分别计算符合条件的行数。最后输出结果到屏幕上。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)