利用 Python 的文件操作与基本数据类型(比如2维列表)构,从文件 abc.txt 中读取数据,并分析15个同学语文,数学,英语的平均成绩,将这个信息以行的形式写入文件def.txt。
时间: 2024-05-01 15:17:23 浏览: 92
对学生成绩的排序,从文件种读取成绩
好的,这是一个关于Python文件操作和基本数据类型的问题,我可以回答。首先,我会问您在文件abc.txt中的数据是以什么样的格式存储的,比如是以逗号或制表符分隔的各科成绩,还是以一定的文本格式排版的。根据不同的格式,我们可以选择不同的方法进行数据的读取和处理。
假设数据是以每行一个同学的形式存储,每行包含姓名、语文、数学、英语三门科目的成绩,各项之间用逗号分隔。那么我们可以使用Python中的文件操作函数,打开abc.txt文件并逐行读取数据,然后再将数据按照指定格式进行处理,最终计算出语文、数学、英语三门科目的平均成绩。
下面是一个示例代码:
```python
# 打开文件abc.txt并逐行读取数据
with open('abc.txt', 'r') as f:
lines = f.readlines()
# 构造存储同学成绩的列表
scores = []
for line in lines:
fields = line.strip().split(',') # 去除行尾换行符并以逗号分割各项
name = fields[0]
# 将各科成绩转换为整数存储
chinese_score = int(fields[1])
math_score = int(fields[2])
english_score = int(fields[3])
# 将同学姓名和成绩以字典形式存储,并添加到列表中
scores.append({'name': name, 'chinese': chinese_score, 'math': math_score, 'english': english_score})
# 计算各科平均成绩
avg_chinese = sum([s['chinese'] for s in scores]) / len(scores)
avg_math = sum([s['math'] for s in scores]) / len(scores)
avg_english = sum([s['english'] for s in scores]) / len(scores)
# 写入结果到文件def.txt
with open('def.txt', 'w') as f:
f.write('语文平均成绩:%.2f\n' % avg_chinese)
f.write('数学平均成绩:%.2f\n' % avg_math)
f.write('英语平均成绩:%.2f\n' % avg_english)
```
上述代码中,我们通过`readlines()`函数逐行读取了文件abc.txt中的数据,并将各个字段按照逗号分割开来。然后我们逐个构造了一个字典,其中包含了同学姓名和各科成绩。最后,我们分别计算了语文、数学、英语三门科目的平均成绩,并将结果写入文件def.txt中。写文件的过程与读文件类似,使用`open()`函数指定要写入的文件名和打开模式即可。
希望这个回答能够满足您的需求。
阅读全文