又是一次期中考。考完之后肯定少不了成绩的排名。可是面对这么多的成绩,老师也觉得累。于是向熟悉编程的你求助。计入排名的考试只有语文数学跟英语三门。按照平均分从高到低输出。 输入要求 先输入一个整数n,表示有n个学生。(0 < n < 300) 接下来n行,每行有4个数据,分别代表学号,语文成绩,数学成绩,英语成绩。 输出要求 按照平均分从大到小输出这n个学生的语文成绩、数学成绩、英语成绩。平均分相同时,按照学号的升序来。
时间: 2024-02-25 14:53:34 浏览: 151
好的,这是一道简单的排序题目,我可以帮你写一个Python程序来实现。
```python
n = int(input()) # 输入学生人数
students = [] # 用一个列表来存储学生信息
# 循环读取每个学生的信息并存储在列表中
for i in range(n):
info = input().split()
sid = info[0] # 学号
grades = list(map(int, info[1:])) # 成绩列表
avg_grade = sum(grades) / 3 # 平均成绩
students.append((sid, grades, avg_grade)) # 将学生信息存储为元组并添加到列表中
# 定义排序规则函数
def sort_rule(student):
return (-student[2], student[0])
# 对学生列表进行排序
students.sort(key=sort_rule)
# 输出排序结果
for student in students:
print(student[0], end=' ')
for grade in student[1]:
print(grade, end=' ')
print()
```
你可以将以上代码复制到ChitGPT中运行,输入学生信息后,程序会按照题目要求输出排序结果。
相关问题
又是一次期中考。考完之后肯定少不了成绩的排名。可是面对这么多的成绩,老师也觉得累。于是向熟悉编程的你求助。计入排名的考试只有语文数学跟英语三门。按照平均分从高到低输出。
好,这个问题可以用 Python 语言来解决。首先我们需要输入每个学生的姓名和三科成绩,然后计算每个学生的平均分,并按照平均分从高到低排序,最后输出排名结果。
以下是一个示例代码:
```python
# 定义学生类
class Student:
def __init__(self, name, chinese, math, english):
self.name = name
self.chinese = chinese
self.math = math
self.english = english
self.average = (chinese + math + english) / 3
# 输入学生信息
n = int(input("请输入学生人数:"))
students = []
for i in range(n):
name = input("请输入第%d个学生的姓名:" % (i+1))
chinese = float(input("请输入第%d个学生的语文成绩:" % (i+1)))
math = float(input("请输入第%d个学生的数学成绩:" % (i+1)))
english = float(input("请输入第%d个学生的英语成绩:" % (i+1)))
student = Student(name, chinese, math, english)
students.append(student)
# 按照平均分从高到低排序
students = sorted(students, key=lambda x: x.average, reverse=True)
# 输出排名结果
print("排名 姓名 平均分")
for i, student in enumerate(students):
print("%-4d %-4s %.2f" % (i+1, student.name, student.average))
```
这个代码中,我们定义了一个 `Student` 类来存储每个学生的姓名和成绩,并计算平均分。然后,我们根据平均分排序,最后按照排名输出结果。
阅读全文