有10个学生,每个学生的数据包括学号、姓名、3门功课的成绩。从键盘输入10个学生的数据,要求按平均成绩降序显示出所有学生的数据(包括学号、姓名、3门课成绩、平均成绩),并将其写入文本文件result.txt中。
时间: 2023-12-15 22:44:14 浏览: 93
好的,这是一个基本的排序和文件操作问题,我可以为您提供一个Python的解决方案:
```python
# 定义学生类
class Student:
def __init__(self, id, name, score1, score2, score3):
self.id = id
self.name = name
self.score1 = score1
self.score2 = score2
self.score3 = score3
self.avg_score = (score1 + score2 + score3) / 3
# 定义一个列表用于存储所有学生数据
students = []
# 从键盘输入10个学生的数据
for i in range(10):
id = input("请输入学生{}的学号:".format(i+1))
name = input("请输入学生{}的姓名:".format(i+1))
score1 = float(input("请输入学生{}的第一门课成绩:".format(i+1)))
score2 = float(input("请输入学生{}的第二门课成绩:".format(i+1)))
score3 = float(input("请输入学生{}的第三门课成绩:".format(i+1)))
student = Student(id, name, score1, score2, score3)
students.append(student)
# 按平均成绩降序排序
students.sort(key=lambda x: x.avg_score, reverse=True)
# 将所有学生数据写入文件result.txt中
with open('result.txt', 'w') as f:
for student in students:
f.write("学号:{} 姓名:{} 第一门课成绩:{} 第二门课成绩:{} 第三门课成绩:{} 平均成绩:{}\n".format(student.id, student.name, student.score1, student.score2, student.score3, student.avg_score))
# 在控制台输出所有学生数据
for student in students:
print("学号:{} 姓名:{} 第一门课成绩:{} 第二门课成绩:{} 第三门课成绩:{} 平均成绩:{}".format(student.id, student.name, student.score1, student.score2, student.score3, student.avg_score))
```
这段代码中,我们首先定义了一个`Student`类,用于存储每个学生的数据。然后通过循环从键盘输入10个学生的数据,将每个学生的数据存储到一个列表中。接着使用`sort`方法按平均成绩降序排序。最后,我们将所有学生数据写入文件`result.txt`中,并在控制台输出所有学生数据。
阅读全文