输入n个学生的姓名及其3门功课成绩(整数),要求根据3门功课的平均成绩从高分到低分输出每个学生的姓名、3门功课成绩及平均成绩,若平均分相同则按姓名的字典序输出。 输入格式: 测试数据有多组,处理到文件尾。每组测试数据首先输入一个正整数n(1<n<100),表示学生人数;然后是n行信息,分别表示学生的姓名(长度不超过10且由英文字母构成的字符串)和3门课成绩(正整数)。 输出格式: 对于每组测试,输出排序后的学生信息,每行一个学生信息:姓名、3门课成绩、平均成绩(保留2位小数)。每行数据之间留一个空格。python
时间: 2024-03-26 18:38:04 浏览: 63
输入N个学生的个人信息和成绩,然后按平均成绩的降序排列
好的,这是一个需要对输入进行排序的问题,可以使用 Python 中的 sorted 函数进行排序。代码如下:
```python
while True:
try:
n = int(input())
except:
break
students = []
for i in range(n):
name, score1, score2, score3 = input().split()
avg_score = (int(score1) + int(score2) + int(score3)) / 3
students.append((name, int(score1), int(score2), int(score3), avg_score))
students = sorted(students, key=lambda x: (-x[4], x[0]))
for student in students:
print(student[0], student[1], student[2], student[3], '{:.2f}'.format(student[4]))
```
这个程序首先读入一个正整数 n,表示学生人数,然后读入 n 行信息,每行信息包括学生姓名和三门课成绩。为了方便排序,我们将每个学生的信息存储在一个元组中,元组的第一项是姓名,后面三项是课程成绩,最后一项是平均成绩。
接下来,我们使用 sorted 函数对学生信息进行排序。排序的关键是平均成绩和姓名,我们先按平均成绩从高到低排序,如果平均成绩相同,则按姓名的字典序排序。
最后,我们输出排序后的学生信息,每行一个学生信息,包括姓名、三门课成绩和平均成绩,每个数据之间留一个空格,平均成绩保留两位小数。
阅读全文