Sorting 我需要修改我的代码,使其从最高到最低显示
到目前为止,在我的代码中,我这样做是为了显示平均值,并且可以按照字母顺序对学生进行排序。然而,我需要修改我的代码,以便结果可以从最高存储到最低,但我正在努力解决这个问题 在我的文本文件中,它如下所示: 名称,3,4,5Sorting 我需要修改我的代码,使其从最高到最低显示,sorting,python-3.x,Sorting,Python 3.x,到目前为止,在我的代码中,我这样做是为了显示平均值,并且可以按照字母顺序对学生进行排序。然而,我需要修改我的代码,以便结果可以从最高存储到最低,但我正在努力解决这个问题 在我的文本文件中,它如下所示: 名称,3,4,5 2名称,5,6,7 3名称,3,4,5 每个名字都不一样 这是我目前的代码: class Student: def __init__(self, name, marks): self.name = name self.marks = mar
2名称,5,6,7
3名称,3,4,5 每个名字都不一样 这是我目前的代码:
class Student:
def __init__(self, name, marks):
self.name = name
self.marks = marks
def avg_mark(self):
return sum(self.marks)/len(self.marks)
def __str__(self):
return '{0}: {1}, {2}'.format(self.name, self.marks, self.avg_mark())
def load_grades(filename):
fd = open(filename, 'r')
f = {}
for line in fd:
split = line.split(',')
key = split[0]
marks = [int(n) for n in split[1:]]
try:
f[key] += marks
except KeyError:
f[key] = marks
students = []
for key, values in f.items():
students.append(Student(key, values[-3:]))
return students
def sort_by_name(students):
def get_name(student):
return student.name
students = sorted(students, key=get_name)
return students
def sort_by_avg(students):
def get_avg(student):
return student.avg_mark()
students = sorted(students, key=get_avg)
return students
again = True
while again:
class_num = input ('Which class do you want to view 1,2 or 3?')
print('please input a, b or c')
print('a)Alphabeically')
print('b)average')
print('c)highest to lowest')
sort = input ('how would you like to view it:')
if class_num =="1" and sort =="a":
students = load_grades('class1.txt')
students = sort_by_name(students)
elif class_num =="1" and sort =="b":
students = load_grades('class1.txt')
students = sort_by_avg(students)
for student in students:
print(student)
Again=input('Do you want to view another class yes or no?')
again = (Again=='yes')
print('bye')
我希望这样,当按下c键时,数字从高到低排序
谢谢我不知道你说的“从最高到最低”是什么意思。例如,“5,5,5”>“5,5,4”>“5,4,4”>“5,4,3”>“5,3,3”=“4,4,3”>“4,3,3”?因此它会将每个学生的数字从高到低排序,然后将每个学生的最高分数从高到低排序。(如果有意义的话)