python実戦33学生成績ソート(クラスと対象練習)

6572 ワード

タイトル内容:
文字列タイプsnameは入力された学生の名前を表し、整数値mscoreは学生の数学成績を表し、整数値cscoreは学生の国語成績を表し、整数値escoreは学生の英語成績を表す.
そして、入力された学生の成績(それぞれ異なる)に基づいて、総得点が最も高い学生の名前と各科目の成績を出力するように要求する.
入力形式:
入力は4つのセクションに分かれています.
まず学生の名前を入力して、スペースで区切ります.
そして、学生の数学の成績(それぞれ異なる正の整数)を入力し、スペースで区切ります.
学生の国語数学の成績(それぞれ異なる正の整数)を入力しても、スペースで区切られます.
最後に、学生の英語の数学の成績(それぞれ異なる正の整数)を入力し、スペースで区切ります.
学生の名前の個数と成績の個数は必ず同じです.
出力フォーマット:
合計点数が最も高い学生の名前と各科目の成績のために、スペースで区切られています.
サンプルを入力:
jack tom
95 84
90 75
85 90
出力サンプル:
jack 95 90 85
My answer
class Student:
    def __init__(self, n, m, c, e):
        self.n = n
        self.m = m
        self.c = c
        self.e = e
        self.total = m + c + e

    def __lt__(self, other):
        return self.total < other.total

    def __str__(self):
        return '%s %d %d %d' % (self.n, self.m, self.c, self.e)


sname = input().split()
mscore = list(map(int, input().split()))
cscore = list(map(int, input().split()))
escore = list(map(int, input().split()))
b = []
for i in range(len(sname)):
    s = Student(sname[i], mscore[i], cscore[i], escore[i])
    b.append(s)
b.sort()
print(b[-1])