文件score.csv中存放如下图所示学生的成绩,分别计算输入学生和课程的平均成绩,并输出所求平均成绩,保留2位小数 图片1.png 输入格式: 从键盘上输入学生姓名和课程名称,中间用空格隔开 输出格式: 每行分别输出该学生的平均成绩和该课程的平均成绩,保留2位小数。如果没有该学生,则输出没有该学生;如果没有该课程,则输出没有该课程。 输入样例: 例如: 毛莉 语文 输出样例: 例如: 该学生平均成绩为80.00 该课程平均成绩为76.97 输入样例: 例如: 毛莉 Python 输出样例: 例如: 该学生平均成绩为80.00 没有该课程 输入样例: 例如: 张三 数学 输出样例: 例如: 没有该学生 该课程平均成绩为76.84
时间: 2024-02-24 11:55:28 浏览: 267
测试所用的学生成绩.csv
好的,我们可以在上面的代码基础上继续进行修改,实现输入学生姓名和课程名称后计算平均成绩。以下是一个示例代码:
```python
import csv
with open('score.csv', 'r') as f:
reader = csv.reader(f)
# 跳过第一行,即表头
next(reader)
# 存储每个学生的总成绩和科目数量
student_scores = {}
# 存储每个科目的总成绩和学生数量
subject_scores = {}
for row in reader:
# 获取学生和科目
student, subject = row[0], row[1]
# 获取成绩并转换为浮点数
score = float(row[2])
# 更新学生总成绩和科目数量
if student in student_scores:
student_scores[student][0] += score
student_scores[student][1] += 1
else:
student_scores[student] = [score, 1]
# 更新科目总成绩和学生数量
if subject in subject_scores:
subject_scores[subject][0] += score
subject_scores[subject][1] += 1
else:
subject_scores[subject] = [score, 1]
# 读取输入的学生姓名和课程名称
student_name, subject_name = input().split()
# 计算学生平均成绩并输出
if student_name in student_scores:
student_avg_score = student_scores[student_name][0] / student_scores[student_name][1]
print(f'该学生平均成绩为{student_avg_score:.2f}')
else:
print('没有该学生')
# 计算科目平均成绩并输出
if subject_name in subject_scores:
subject_avg_score = subject_scores[subject_name][0] / subject_scores[subject_name][1]
print(f'该课程平均成绩为{subject_avg_score:.2f}')
else:
print('没有该课程')
```
其中,我们在读取完数据后,使用 `input` 函数从键盘输入学生姓名和课程名称,并使用 `split` 方法将其拆分为字符串列表。接着,我们分别计算输入学生的平均成绩和输入课程的平均成绩,并打印输出,保留两位小数。如果没有该学生或该课程,则输出相应信息。
阅读全文