python实现:写一个班级的类, 存储班里人数,统计班级里各学科的总分的最高分、各学科的平均分; 写班级里的学生类,存储学生所有成绩, 计算某个学生的全部课程的平均分、全部课程的总分、全部课程的最高分

思路:

1.定义班级类:
构造函数:班级名称、班级学生列表
设定班级名称,获取班级名称
添加班级学生
获取总分的最高分
获取语文平均分
获取数学平均分


2.定义学生类:
构造函数:学生姓名、学生班级名称、语文成绩、数学成绩、总分
设定语文成绩,获取语文成绩
设定数学成绩,获取数学成绩
获取学生总分
获取学生平均分
获取学生最高分


3.实例化
输入学生1,设定语文成绩,数学成绩,打印平均分、总分、最高分
输入学生2,设定语文成绩,数学成绩,打印平均分、总分、最高分
设定班级,打印班级最高分、语文平均分、数学平均分



#
班级类 class Class_NO(object): def __init__(self,name): self.grade_class_name=name self.students=[] def set_grade_class_name(self,name): self.grade_class_name=name def get_grade_class_name(self): return self.grade_class_name def add_student(self,student): self.students.append(student) def get__classNo_max_total_score(self): student_total_score=[] for i in self.students: student_total_score.append(i.get_student_total_score()) ########## #print (student_total_score) max_student_total_score=max(student_total_score) return max_student_total_score def get_classNo_chinese_avg_score(self): student_chinese_score=[] for i in self.students: student_chinese_score.append(i.get_chinese_score()) return sum(student_chinese_score)/len(self.students) def get_classNo_math_avg_score(self): student_math_score=[] for i in self.students: student_math_score.append(i.get_math_score()) return sum(student_math_score)/len(self.students) #学生类 class Student(object): def __init__(self,name,grade_class_no): self.name=name self.grade_class_no=grade_class_no self.__chinese_score=None self.__math_score=None self.__total_score=None def set_chinese_score(self,score): if score>=0 and score<=100 and isinstance(score,(int,float)): self.__chinese_score=score else: print ("你输入的分数不是数字类型,或者不在0-100分数的范围内") def get_chinese_score(self): return self.__chinese_score def set_math_score(self,score): if score>=0 and score<=100 and isinstance(score,(int,float)): self.__math_score=score else: print ("你输入的分数不是数字类型,或者不在0-100分数的范围内") def get_math_score(self): return self.__math_score def get_student_total_score(self): self.__total_score=self.__chinese_score+self.__math_score return self.__total_score def get_student_avg_score(self): return sum([self.__chinese_score,self.__math_score])/2 def get_student_max_score(self): return max(self.__chinese_score,self.__math_score) if __name__ == "__main__": s = Student("zita","三年二班") s.set_chinese_score(100) s.set_math_score(80) print ("%s的平均分是:%s"%(s.name,s.get_student_avg_score()),",","%s的总分是:%s"%(s.name,s.get_student_total_score()),",","%s的最高分是:%s"%(s.name,s.get_student_max_score())) t = Student("tim","三年二班") t.set_chinese_score(88) t.set_math_score(62) print ("%s的平均分是:%s"%(t.name,t.get_student_avg_score()),",","%s的总分是:%s"%(t.name,t.get_student_total_score()),",","%s的最高分是:%s"%(t.name,t.get_student_max_score())) c=Class_NO("三年二班") c.add_student(s) c.add_student(t) print ("%s总分最高分是:%s"%(c.get_grade_class_name(),c.get__classNo_max_total_score())) print ("%s语文学科平均分是:%s"%(c.get_grade_class_name(),c.get_classNo_chinese_avg_score())) print ("%s数学学科平均分是:%s"%(c.get_grade_class_name(),c.get_classNo_math_avg_score()))

 运行结果:

E:\workspace-python\test>py -3 c.py
zita的平均分是:90.0 , zita的总分是:180 , zita的最高分是:100
tim的平均分是:75.0 , tim的总分是:150 , tim的最高分是:88
三年二班总分最高分是:180
三年二班语文学科平均分是:94.0
三年二班数学学科平均分是:71.0

 

posted @ 2018-11-26 14:22  糖葫芦有点甜  阅读(7731)  评论(0编辑  收藏  举报