已知班级成绩保存在ex_data1.txt,要求: (1)输出成绩前5名的姓名及成绩; (2)计算百分制成绩对应的五分制成绩(不及格,及格,中等,良好,优秀)并保存在文件中第三列。
时间: 2024-09-16 16:04:56 浏览: 78
为了完成这个任务,我们需要按照以下步骤操作:
1. 首先,打开并读取`ex_data1.txt`文件,这个文件应该包含学生的姓名、原始分数两列数据。
2. 对数据进行排序,可以按分数降序排列,这样成绩最高的学生会排在前面。
3. 提取前5名的学生信息,包括他们的姓名和原始分数。
4. 计算百分制成绩对应的五分制成绩。通常,我们可以设定以下规则:
- 不及格:原始分数小于60分,对应五分制为1分
- 及格:60分到79分之间,对应3分
- 中等:80分到89分,对应4分
- 良好:90分到99分,对应5分
- 优秀:100分,对应5分
5. 将每个学生的姓名、原始分数以及新的五分制成绩添加到一个新的列表中。
6. 将结果写入到一个新的文件,如`converted_data.txt`,并将新添加的第三列(五分制成绩)存储下来。
下面是Python的一个简单示例:
```python
# 读取数据
with open('ex_data1.txt', 'r') as f_in, open('converted_data.txt', 'w') as f_out:
data = [line.strip().split(',') for line in f_in.readlines()]
# 数据排序
sorted_data = sorted(data, key=lambda x: float(x[1]), reverse=True)
top_5 = sorted_data[:5]
# 计算并转换分数
for student in top_5:
if float(student[1]) < 60:
score = 1
elif 60 <= float(student[1]) < 80:
score = 3
elif 80 <= float(student[1]) < 90:
score = 4
elif 90 <= float(student[1]) < 100:
score = 5
else:
score = 5 # 如果满分,仍定为优秀
f_out.write(','.join([student[0], str(student[1]), str(score)]) + '\n')
阅读全文