(i) 有5个学生,每个学生有名字,学号,3门课的成绩,从键盘输入学生数据,并把它们写入一个文件中。 Liu 101 90 89 88 Chen 102 80 79 78 Zhang 103 70 69 68 Wang 104 100 99 98 Wei 105 60 59 50 (ii)在另一个程序中,读取这个文件信息,并计算出每位学生的平均分,按照分数高低,排序学生,并按这个顺序存入一个新的文件中。
时间: 2024-03-18 16:44:24 浏览: 53
有5个学生,么个学生有三门课成绩,从键盘键入以上数据,存放在文件中
5星 · 资源好评率100%
好的,我会解答你的问题。
以下是一个解决方案:
1. 写入学生数据到文件中(写入程序)
```python
# 打开文件
with open('students.txt', 'w') as f:
# 写入学生数据
f.write('Liu 101 90 89 88\n')
f.write('Chen 102 80 79 78\n')
f.write('Zhang 103 70 69 68\n')
f.write('Wang 104 100 99 98\n')
f.write('Wei 105 60 59 50\n')
```
2. 读取文件信息并计算每位学生的平均分,排序学生,并按顺序存入新文件中(读取程序)
```python
# 读取文件内容
with open('students.txt', 'r') as f_read:
# 创建一个列表,用于存储每个学生的信息
students = []
# 遍历每一行
for line in f_read:
# 将每一行的数据拆分成一个列表
student_info = line.strip().split()
# 计算每位学生的平均分
avg_score = (int(student_info[2]) + int(student_info[3]) + int(student_info[4])) / 3
# 将学生信息和平均分存入一个元组中
student = (student_info[0], student_info[1], avg_score)
# 将元组添加到学生列表中
students.append(student)
# 对学生列表按平均分进行排序
students_sorted = sorted(students, key=lambda x: x[2], reverse=True)
# 将排序后的学生信息写入新文件中
with open('students_sorted.txt', 'w') as f_write:
for student in students_sorted:
f_write.write(f'{student[0]} {student[1]} {student[2]:.2f}\n')
```
运行上述程序后,会在当前目录下生成一个名为 `students_sorted.txt` 的文件,其中按照平均分从高到低排列了每位学生的信息。
阅读全文