class Student:
def __init__(self, name, scores):
self.name = name # 学生姓名
self.scores = scores # 学生的各科分数列表
def read_input():
try:
n,m=map(int,input().split())
subjects=input().split()
#创立字典,将科目名与索引关联
subject_rankIdx={subjects[i]:i for i in range(m)}
#列表,存多个科目名
students=[]
for _ in range(n):
data=input().split()
#data列表第一个存学生姓名
name=data[0]
#将data列表第2个到最后一个转为int,存在scores列表中
scores=list(map(int,data[1:]))
students.append(Student(name,scores))
#排名时具体科目
subject=input().strip()
return students,subject,subject_rankIdx,m
except ValueError:
print("Invalid")
return None,None,None,None
#学生列表,选择科目,科目索引映射
def rank_students(students,subject,subject_rankIdx,m):
#找subject在subject_rankIdx字典中的值,若不存在返回m
rankIdx=subject_rankIdx.get(subject,m)
students.sort(key=lambda x:(-x.scores[rankIdx],x.name))
return students
def main():
students,subject,subject_rankIdx,m=read_input()
if students is not None:
ranked_students=rank_students(students,subject,subject_rankIdx,m)
for student in ranked_students:
print(student.name)
if __name__ == "__main__":
main() # 执行主函数
智能成绩表
最新推荐文章于 2024-08-30 12:42:13 发布