飞桨领航团
领航团简介
飞桨领航团是飞桨开发者的兴趣社区,为开发者们提供丰富的本地技术沙龙、Meetup、及线上交流平台,面向所有对人工智能及深度学习领域感兴趣的开发者开放。在各个城市/高校领航团团长及成员的热情支持下,飞桨领航团已建立132个社群,覆盖28个省级行政区,108个高校,并且在持续增长中。欢迎开发者们加入领航团,结识更多本地技术同好,共建开源社区,共享开源成果与快乐。
领航团欢迎您的加入
第一题(30分)
数据如下:
stu1.txt 孙同学,2020-5-21,20,'男',77,56,77,76,92,58,-91,84,69,-91 stu2.txt 赵同学,2020-11-3,24,'女',65,68,72,95,-81,71,86,91,57,91 stu3.txt 王同学,2021-8-7,25,'男',87,78,90,-76,88,47,100,65,69,100 stu4.txt 李同学,2021-8-10,29,'男',92,54,85,71,-91,68,77,68,95,95
以上四个txt文档在work路径下可以找到。
定义Student类,包括name、dob、age、gender和score属性,包括top3方法用来返回学生的最大的3个成绩(可重复)、sanitize方法用来将负的分数变为正的分数,负的分数可能是输入错误。声明stu_list对象组数用于存储所有的学生对象。最后输出所有的学生信息包括姓名、生日、年龄、性别、最高的3个分数。
第一题的输出结果如下,供参考:
def opentext(txt): with open(txt) as f: line = f.readline() # print(line.strip().split(',')) return line.strip().split(',')
# 请在此处完成代码 class Student(): def __init__(self, name, dob, age, gender, score): self.name = name self.dob = dob self.age = age self.gender = gender self.score = score def name(self): return self.name def dob(self): return self.dob def age(self): return self.age def gender(self): return self.gender def top3(self): newlist = [] for t in self.score: t = int(t) if t < 0 : t = -t newlist.append(t) return sorted(newlist)[::-1][:3] def printf(textname): txtlist = opentext(textname) name = txtlist.pop(0) dob = txtlist.pop(0) age = txtlist.pop(0) gender = txtlist.pop(0) student = Student(name, dob, age, gender, txtlist) # print(student.name)a print(f'姓名:{student.name} 生日:{student.dob} 年龄:{student.age} 性别:{student.gender} 分数:{student.top3()}') printf('work/stu1.txt') printf('work/stu2.txt') printf('work/stu3.txt') printf('work/stu4.txt')
姓名:孙同学 生日:2020-5-21 年龄:20 性别:'男' 分数:[92, 91, 91] 姓名:赵同学 生日:2020-11-3 年龄:24 性别:'女' 分数:[95, 91, 91] 姓名:王同学 生日:2021-8-7 年龄:25 性别:'男' 分数:[100, 100, 90] 姓名:李同学 生日:2021-8-10 年龄:29 性别:'男' 分数:[95, 95, 92]
第二题(30分)
数据格式如下:
stu5.txt 特长同学,2020-10-5,20,'男',180,87,98,77,76,92,58,-76,84,69,-47 stu6.txt 特长同学,2020-10-6,20,'女',230,76,48,82,88,92,58,-91,84,69,-68
以上两个txt文档在work路径下可以找到。
定义Spostudent、Artstudent为Student的子类,在子类的属性里面新增了spe为特长分数。
Spostudent包括的top3方法返回的是最低的3个得分(可重复),Artstudent包括top3方法返回的是最高的3个得分(可重复),最后使用多态的方式输出2个特长同学的姓名、生日、年龄、性别、分数、特长分。
第二题的输出结果如下,供参考:
# 请在此处完成代码 class Spostudent(Student): def __init__(self, name, dob, age, gender, score, spe): Student.__init__(self, name, dob, age, gender, score) self.spe = spe def spe(self): return self.spe class Artstudent(Student): def __init__(self, name, dob, age, gender, score): Student.__init__(self, name, dob, age, gender, score) def top3(self): newlist = [] for t in self.score: t = int(t) if t < 0 : t = -t newlist.append(t) return sorted(newlist)[0:3] def printf(text,a): txtlist = opentext(text) name = txtlist.pop(0) dob = txtlist.pop(0) age = txtlist.pop(0) gender = txtlist.pop(0) spe = txtlist.pop(0) spostudent = Spostudent(name, dob, age, gender, txtlist, spe) artstudent = Artstudent(name, dob, age, gender, txtlist) if a == 0: a = spostudent.top3() else: a = artstudent.top3() print(f'姓名:{spostudent.name} 生日:{spostudent.dob} 年龄:{spostudent.age} 性别:{spostudent.gender} 分数:{a} 特长分:{spostudent.spe}') printf('work/stu5.txt', 1) {spostudent.gender} 分数:{a} 特长分:{spostudent.spe}') printf('work/stu5.txt', 1) printf('work/stu6.txt', 0)
姓名:特长同学 生日:2020-10-5 年龄:20 性别:'男' 分数:[56, 58, 69] 特长分:180 姓名:特长同学 生日:2020-10-6 年龄:20 性别:'女' 分数:[92, 91, 91] 特长分:230