统计成绩。给出n个学生的考试成绩表,每条信息由学号、姓名和成绩组成,试设计一个综合程序: (1)按成绩高低次序,打印出每个学生的信息; (2)要求程序具有选择任一种排序算法的功能。
时间: 2024-03-14 11:45:54 浏览: 17
好的,我可以为您编写一个Python程序来实现您的要求。代码如下:
```python
class Student:
def __init__(self, id, name, score):
self.id = id
self.name = name
self.score = score
def display_students(students):
for student in students:
print("学号:{},姓名:{},成绩:{}".format(student.id, student.name, student.score))
def sort_by_score(students):
return sorted(students, key=lambda x: x.score, reverse=True)
def sort_by_id(students):
return sorted(students, key=lambda x: x.id)
def sort_by_name(students):
return sorted(students, key=lambda x: x.name)
if __name__ == '__main__':
n = int(input("请输入学生数量:"))
students = []
for i in range(n):
id = input("请输入第{}个学生的学号:".format(i+1))
name = input("请输入第{}个学生的姓名:".format(i+1))
score = float(input("请输入第{}个学生的成绩:".format(i+1)))
student = Student(id, name, score)
students.append(student)
print("按成绩排序:")
sorted_students = sort_by_score(students)
display_students(sorted_students)
while True:
choice = input("请选择排序方式:0-按成绩排序,1-按学号排序,2-按姓名排序,q-退出程序:")
if choice == '0':
print("按成绩排序:")
sorted_students = sort_by_score(students)
display_students(sorted_students)
elif choice == '1':
print("按学号排序:")
sorted_students = sort_by_id(students)
display_students(sorted_students)
elif choice == '2':
print("按姓名排序:")
sorted_students = sort_by_name(students)
display_students(sorted_students)
elif choice == 'q':
break
else:
print("无效的选项,请重新输入!")
```
程序首先让您输入学生数量,然后逐个输入每个学生的信息。之后,程序会按照成绩高低排序,打印出每个学生的信息。接着,程序进入循环,让您选择排序方式。输入0选择按成绩排序,输入1选择按学号排序,输入2选择按姓名排序,输入q退出程序。程序会根据您的选择进行排序并打印输出结果。
注意,这里使用了三个lambda表达式来定义按照成绩、学号和姓名排序的规则。如果您需要使用其他排序算法,可以在程序中添加相关的排序函数并在循环中添加对应的选项。