有5个学生,每个学生的数据包括:学号、姓名、三门课成绩,编写程序要求从键盘输入学生们的数据,并输出成绩报表(包括每人的学号,姓名、三门成绩及平均分数),还要求输出平均分在前3名的学生姓名及平均成绩。的代码
时间: 2023-12-15 20:23:37 浏览: 169
下面是 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
# 计算平均成绩
def average_score(self):
return (self.score1 + self.score2 + self.score3) / 3
# 输入学生数据
students = []
num = 5
for i in range(num):
print("请输入第%d个学生的信息:" % (i+1))
id = input("学号:")
name = input("姓名:")
score1 = float(input("第一门课成绩:"))
score2 = float(input("第二门课成绩:"))
score3 = float(input("第三门课成绩:"))
students.append(Student(id, name, score1, score2, score3))
# 输出成绩报表
print("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均成绩")
for student in students:
print("%s\t%s\t%.1f\t%.1f\t%.1f\t%.1f" % (student.id, student.name, student.score1, student.score2, student.score3, student.average_score()))
# 计算平均分前三名学生
sorted_students = sorted(students, key=lambda student: student.average_score(), reverse=True)
print("平均分前三名学生:")
for i in range(3):
student = sorted_students[i]
print("%s\t%.1f" % (student.name, student.average_score()))
```
运行结果类似如下:
```
请输入第1个学生的信息:
学号:001
姓名:张三
第一门课成绩:80
第二门课成绩:90
第三门课成绩:85
请输入第2个学生的信息:
学号:002
姓名:李四
第一门课成绩:75
第二门课成绩:85
第三门课成绩:90
请输入第3个学生的信息:
学号:003
姓名:王五
第一门课成绩:90
第二门课成绩:95
第三门课成绩:80
请输入第4个学生的信息:
学号:004
姓名:赵六
第一门课成绩:85
第二门课成绩:80
第三门课成绩:85
请输入第5个学生的信息:
学号:005
姓名:钱七
第一门课成绩:95
第二门课成绩:85
第三门课成绩:90
学号 姓名 成绩1 成绩2 成绩3 平均成绩
001 张三 80.0 90.0 85.0 85.0
002 李四 75.0 85.0 90.0 83.3
003 王五 90.0 95.0 80.0 88.3
004 赵六 85.0 80.0 85.0 83.3
005 钱七 95.0 85.0 90.0 90.0
平均分前三名学生:
钱七 90.0
王五 88.3
张三 85.0
```
阅读全文