一、案例分析:
1、定义一个父类Student和两个子类LevelSt和PassSt,在父类中定义两个实例变量,使子类继承父类的所有属性和方法,并各自定义根据成绩计算等级和判断是否通过的方法;
2、显示由LevelSt和PassSt类对象构成的学生成绩列表,以及所有学生名字和成绩,并按字典排列
二:代码解析:
#1、定义Student父类
class Student():
def __init__(self,name = '',grade = 0):
self.name = name
self.grade = grade
def show(self):
print('%s\t %s'%(self.name,self.calcLevel()))
#2(1)、定义Student子类(根据成绩计算等级)
class LevelSt(Student):
def calcLevel(self):
if self.grade >= 90:
return 'A'
elif self.grade >= 80:
return 'B'
elif self.grade >= 70:
return 'C'
elif self.grade >= 60:
return 'D'
else:
return 'E'
#2(2)、定义Student子类(根据成绩判断是否通过)
class PassSt(Student):
def calcLevel(self):
if self.grade >= 60:
return '通过'
else:
return '不通过'
#3、定义列表函数list_St存放学生数据
def list_St():
listSt=[]
is_continue='Y'
while is_continue in ['Y','y','YES','yes']:
name = input('请输入名字:')
grade = float(input('请输入成绩:'))
choice = input('请选择(L or P):') #转换成大写
if choice.upper()=='L':
s=LevelSt(name,grade)
else:
s=PassSt(name,grade)
listSt.append(s) #给列表listOfSt追加元素
is_continue = input('继续?(y/n):')
return listSt
#4、定义显示处理后的学生数据
def display(listSt):
print('\n姓名 \t 等级')
listSt.sort(key=lambda x:x.name,reverse = True) #将列表元素按字典排列
for each in listSt:
each.show()
#5、定义主函数
def main():
listSt = list_St()
display(listSt)
#6、调用主函数
if __name__ == '__main__':
main()