#定义student父类
class Student:
def __init__(self,name,grade):
self.name = name
self.grade = grade
def setName(self,name):
self.name = name
def setGrade(self,grade):
self.grade = grade
def getName(self):
return self.name
def show(self):
print('%s\t %s'%(self.name,self.calcLevel()))
#定义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'
#定义student子类(根据成绩判断是否通过)
class PassSt(Student):
def calcLevel(self): #类的多态,和前面类的函数名称相同,但功能不同
if self.grade>=60:
return '通过'
else:
return '不通过'
#定义列表函数list_St存放学生数据
def list_St():
listOfSt=[]
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)
listOfSt.append(s) #给列表listOfSt追加元素
is_continue = input('继续?(y/n):')
return listOfSt
#定义显示处理后的学生数据
def display(listOfSt):
print('\n姓名 \t 等级')
listOfSt.sort(key = lambda x:x.getName()) #将列表元素按字典排列
for each in listOfSt:
each.show()
#定义主函数
def main():
listOfSt = list_St()
display(listOfSt)
if __name__ == '__main__': #如果main主函数为脚本代码执行下面的主函数
main()
python学生成绩等级判断
于 2023-11-17 17:07:58 首次发布