三、现在有一个demo.txt,里面存的是学生对应的姓名和成绩(如下), 后面的数字是多次考试的成绩,统计每个学生的总分数,并存进新的文件。 提示:文件读取,字典拆分,索引,类型转换
时间: 2023-10-07 18:06:52 浏览: 94
可以使用 Python 来实现这个功能。首先,我们可以读取 demo.txt 文件,将每行数据拆分为学生姓名和成绩列表,并将学生姓名作为字典的键,将成绩列表作为字典的值。然后,我们可以遍历字典,计算每个学生的总分数,并将结果写入一个新文件中。
下面是实现代码:
```python
# 打开 demo.txt 文件
with open('demo.txt', 'r') as f:
# 将每行数据拆分为学生姓名和成绩列表,存入字典
scores = {}
for line in f:
name, *grades = line.strip().split()
scores[name] = [int(g) for g in grades]
# 计算每个学生的总分数,并将结果写入新文件
with open('total_scores.txt', 'w') as f:
for name, grades in scores.items():
total_score = sum(grades)
f.write(f"{name}: {total_score}\n")
```
假设 demo.txt 文件中的内容如下:
```
张三 80 85 90
李四 90 95 85
王五 75 80 70
```
运行上述代码后,将生成一个新的文件 total_scores.txt,其内容如下:
```
张三: 255
李四: 270
王五: 225
```
相关问题
现在有一个demo.txt,里面存的是学生对应的姓名和成绩(如下), 后面的数字是多次考试的成绩,统计每个学生的总分数,并存进新的文件。 demo.txt文件内容: 张三 45 70 80 李四 80 99 100 100 王五 27 18 50 69 81 赵六 56 61
这个任务需要读取`demo.txt`文件中的数据,对每个学生的成绩进行累加,然后将结果保存到一个新的文件中。这里可以使用Python的内置模块如`csv`处理文本文件,`collections`来存储并计算总分。以下是简单的步骤:
1. 打开`demo.txt`文件,逐行读取每一条信息,分割出学生的姓名和成绩列表。
2. 使用字典或`defaultdict`来存储每个学生的姓名及其对应的成绩总和,如果遇到新学生则添加,已知学生则累加成绩。
3. 读取完所有记录后,将结果写入新的文件。
下面是一个Python脚本示例:
```python
import csv
# 初始化一个字典来存储学生姓名和总成绩
students_scores = {}
with open('demo.txt', 'r') as f_in, open('output.txt', 'w', newline='') as f_out:
reader = csv.reader(f_in, delimiter=' ')
writer = csv.writer(f_out)
for row in reader:
name = row[0]
scores = [int(score) for score in row[1:]]
# 如果学生名字第一次出现,初始化总成绩
if name not in students_scores:
students_scores[name] = sum(scores)
else:
# 已有该学生,则累加成绩
students_scores[name] += sum(scores)
# 将结果写入新文件
writer.writerow(['姓名', '总分'])
for student, total_score in students_scores.items():
writer.writerow([student, total_score])
阅读全文