有10个学生,每个学生的数据包括学号、姓名、3门功课的成绩。从键盘输入10个学生的数据,要求按平均成绩降序显示出所有学生的数据(包括学号、姓名、3门课成绩、平均成绩),并将其写入文本文件result.txt中。
时间: 2023-12-15 17:44:30 浏览: 38
好的,这是一个计算和排序的问题,我可以帮你写一个 Python 程序解决它。你可以将以下代码保存到一个名为 `student_sort.py` 的文件中并运行它:
```python
# 定义一个 Student 类
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.average = (score1 + score2 + score3) / 3
# 从键盘输入学生数据
students = []
for i in range(10):
id = input("请输入第%d个学生的学号:" % (i+1))
name = input("请输入第%d个学生的姓名:" % (i+1))
score1 = float(input("请输入第%d个学生的第1门课成绩:" % (i+1)))
score2 = float(input("请输入第%d个学生的第2门课成绩:" % (i+1)))
score3 = float(input("请输入第%d个学生的第3门课成绩:" % (i+1)))
students.append(Student(id, name, score1, score2, score3))
# 按平均成绩降序排序
students.sort(key=lambda s: s.average, reverse=True)
# 输出学生数据并写入文件
with open("result.txt", "w") as f:
for s in students:
print("%s %s %.1f %.1f %.1f %.1f" % (s.id, s.name, s.score1, s.score2, s.score3, s.average))
f.write("%s %s %.1f %.1f %.1f %.1f\n" % (s.id, s.name, s.score1, s.score2, s.score3, s.average))
```
这个程序首先定义了一个 `Student` 类,用于存储每个学生的数据。然后通过循环从键盘输入每个学生的数据,并将其保存到一个列表中。接下来使用 `lambda` 表达式定义一个排序规则,按照平均成绩降序排序学生数据。最后将排序后的学生数据输出到屏幕并写入到一个名为 `result.txt` 的文本文件中。
阅读全文