python 案例3:有一score.csv文件,记录了同学的语数外的成绩、综合测评和体育成绩 综合测评有ABCD四个等级,体育成绩有优秀良好及格不及格四个等级 现计算每个人的总分并人高到低的排序,显示姓名和总分。 ABCD折算为100、80、60、0。 优秀良好及格不及格折算为100、80、60、0
时间: 2023-07-10 08:04:03 浏览: 92
可以使用 pandas 库来读取和处理 csv 文件,然后进行计算和排序的操作。
以下是代码实现:
```python
import pandas as pd
# 读取 csv 文件
df = pd.read_csv('score.csv')
# 把 ABCD 等级转换为分数
score_dict = {'A': 100, 'B': 80, 'C': 60, 'D': 0}
df['综合测评'] = df['综合测评'].map(score_dict)
# 把 优秀良好及格不及格 等级转换为分数
sport_score_dict = {'优秀': 100, '良好': 80, '及格': 60, '不及格': 0}
df['体育成绩'] = df['体育成绩'].map(sport_score_dict)
# 计算每个人的总分
df['总分'] = df[['语文', '数学', '英语', '综合测评', '体育成绩']].sum(axis=1)
# 按总分从高到低排序,并显示姓名和总分
df = df.sort_values(by='总分', ascending=False)
print(df[['姓名', '总分']])
```
其中,`map()` 方法可以用来将一个字典中的键值对映射到数据中的某一列。`sum()` 方法可以按行或列求和,`axis=1` 表示按行求和。`sort_values()` 方法可以按某一列的值进行排序,`ascending=False` 表示从高到低排序。
相关问题
实现以下功能: score.csv文件中存储的是一个学生在第一季度同一学科对应的月考求出每一门学科在三个月中的平均成绩,将结果输出在项目文件下,命名为“avg-score.txt。参考格式: 语文:90.67 数学:88.00 英语:85.67 物理:67.33 科学:81.00成绩,
可以使用Python来实现这个功能。代码如下:
```python
import csv
# 读取score.csv文件并计算平均成绩
with open('score.csv', 'r') as f:
reader = csv.reader(f)
header = next(reader) # 读取表头
scores = {}
count = {}
for row in reader:
subject = row[0]
score = float(row[1])
if subject not in scores:
scores[subject] = score
count[subject] = 1
else:
scores[subject] += score
count[subject] += 1
for subject in scores:
scores[subject] /= count[subject]
# 将平均成绩输出到avg-score.txt文件中
with open('avg-score.txt', 'w') as f:
for subject in scores:
f.write('{}:{:.2f} '.format(subject, scores[subject]))
```
注意,代码中使用了Python的CSV模块来读取score.csv文件。该模块可以方便地读取和写入CSV格式的文件。另外,平均成绩保留了两位小数,并且使用了字符串格式化来输出到文件中。
python编程:文本文件a.csv每行内容格式为(姓名,学号,语数英三科成绩): 张三,000001,98,65,80 李四, 000002, 78, 80, 90 ...... 读取a.csv文件内容,计算并在屏幕上输出每个人的学号、姓名、总成绩和平均成
以下是代码实现:
```python
with open('a.csv', 'r') as f:
lines = f.readlines() # 读取文件所有内容
for line in lines:
line = line.strip() # 去除换行符
name, id, score1, score2, score3 = line.split(',') # 按逗号分割每行内容
total_score = int(score1) + int(score2) + int(score3) # 计算总成绩
avg_score = total_score / 3 # 计算平均成绩
print('学号:{},姓名:{},总成绩:{},平均成绩:{}'.format(id, name, total_score, avg_score))
```
这段代码中,我们首先打开文件并读取所有内容。然后,对于每一行内容,我们先去除换行符,再按逗号分割出每个字段。根据题目要求,第一个字段为姓名,第二个字段为学号,后面三个字段为语数英三科成绩。我们将这三个成绩字段转成整数类型,计算总成绩并求平均成绩。最后,使用字符串格式化输出每个人的学号、姓名、总成绩和平均成绩。
阅读全文