python 学生类的使用

学生类的使用

设计一个Student类,这个类包括 : 1) 姓名name,性别sex和成绩score三个实例数据 2) 以name,sex,score为参数的构造方法 3) 三个参数的get()方法 2,除此外再编写将字符串转化成Student类的实例的函数makestudent(studentstring) 3.做测试程序: 根据输入的数据,打印成绩最高分的信息及不及格的名单。 提示:输入多行数据,用sys模块的sys.stdin.readlines()方法实现(ctrl+D结束输入)

 

输入格式:

输入多行以逗号分隔开的字符串

输出格式:

打印最高分的所有数据,并且打印不及格的名单

输入样例:

在这里给出一组输入。例如:

mary,female,78
tom,male,65
susan,female,90
jack,male,23
johon,male,98
chris,female,44
zip,female,87
kiki,male,38
steven,male,58
kate,female,66

输出样例:

在这里给出相应的输出。例如:

the highest score: johon male 98.0
no pass: 
jack
chris
kiki
steven

img

import sys
class Student():
    def __init__(self, name, sex, score):   # 实例属性
        self.name = name 
        self.sex = sex
        self.score = score
        
    def get(self):
        return self.name,self.sex,self.score
    
def makestudent(studentstring):
    name, sex, score = studentstring.split(',')
    return name, sex, score

inf = sys.stdin.readlines()

highest = 0
no_pass = []
all = []
for i in range(len(inf)):
    name, sex, score = makestudent(inf[i].strip('\n'))
    all.append(dict({'name':name, 'sex':sex, 'score':score}))
    s = Student(name,sex,score)
    name, sex, score = s.get()
    if int(score)<60:
        no_pass.append(name)
a = sorted(all, key = lambda all: all["score"], reverse=True)
print('the highest score:', a[0]['name'],a[0]['sex'],a[0]['score'])
print('no pass:')        
print('\n'.join([i for i in no_pass]))