利用类计算学生成绩和排序

描述:

 有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入N个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩) 
样例输入:
2 
1 blue 90 80 70 
b clan 80 70 60
样例输出:
85 75 65 1 blue 90 80 70 

分析:

这一题我主要卡在: 
1. 对python类使用不熟悉;
2. 不知道怎么把多个student加入列表和怎么遍历student 

代码:

class Student:    #定义学生类
     def inputs(self,number,name,score):
         self.number=number
         self.name=name
         self.a=int(score[0])
         self.b=int(score[1])
         self.c=int(score[2])

#将创建的学生类append列表中
stulis=[]
n=int(input())
for i in range(n):
    st=Student()
    s=list(input().split())
    st.inputs(s[0],s[1],s[2:])
    stulis.append(st)

#求每种成绩的总分
sum1=[0]*3
for i in stulis:
    sum1[0]+=i.a
    sum1[1]+=i.b
    sum1[2]+=i.c

#找最高分学生
m=stulis[0].a+stulis[0].b+stulis[0].c
index=0
for i in range(n):
    if stulis[i].a+stulis[i].b+stulis[i].c>m:
        m=stulis[i].a+stulis[i].b+stulis[i].c
        index=i

#输出
print('{:.0f} {:.0f} {:.0f}'.format(sum1[0]/n,sum1[1]/n,sum1[2]/n))
print('{} {} {} {} {}'.format(stulis[index].number,stulis[index].name,stulis[index].a,stulis[index].b,stulis[index].c))

posted @ 2020-01-22 21:02  盐亭的森林  阅读(292)  评论(0编辑  收藏  举报