首页 AI Studio教育版 帖子详情
零基础Python(类和对象的继承)
收藏
快速回复
AI Studio教育版 文章课程答疑 735 1
零基础Python(类和对象的继承)
收藏
快速回复
AI Studio教育版 文章课程答疑 735 1

课程链接:https://aistudio.baidu.com/aistudio/course/introduce/7073
数据如下:

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个分数。

第一题的输出结果如下,供参考:


In [58]
# 请在此处完成代码
NUM_STUDENT=4
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

#print(score)

def top3(self):
return sorted([self.sanitize(t) for t in self.score])[-3:]


def sanitize(self,score):
#print("socre:",type(score))
if int(score)<0:
score=-int(score)
else:
score=int(score)
return score
def get_coach_data(filename):
with open(filename) as f:
line = f.readline()
return line.strip().split(',')
data=[]#存储学生数据
stu_list=[]#存储学生对象
for i in range(NUM_STUDENT):
data.append(get_coach_data("work/stu{:d}.txt".format(i+1)))
stu_list.append(Student(data[i][0],data[i][1],data[i][2],data[i][3],data[i][4:]))
print("姓名:%s 生日:%s 年龄:%s 性别:%s 分数:%s"
%(stu_list[i].name,stu_list[i].dob, stu_list[i].age, stu_list[i].gender,stu_list[i].top3()))


姓名:孙同学 生日:2020-5-21 年龄:20 性别:'男' 分数:[91, 91, 92]
姓名:赵同学 生日:2020-11-3 年龄:24 性别:'女' 分数:[91, 91, 95]
姓名:王同学 生日:2021-8-7 年龄:25 性别:'男' 分数:[90, 100, 100]
姓名:李同学 生日:2021-8-10 年龄:29 性别:'男' 分数:[92, 95, 95]

第二题(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个特长同学的姓名、生日、年龄、性别、分数、特长分。

第二题的输出结果如下,供参考:


In [57]
# 请在此处完成代码
class Spostudent(Student):

def __init__(self,name,dob,age,gender,super_score,score):
Student.__init__(self,name,dob,age,gender,score)
self.super_score=super_score
def top3(self):
return sorted([self.sanitize(t) for t in self.score])[:3]
class Artstudent(Student):

def __init__(self,name,dob,age,gender,super_score,score):
Student.__init__(self,name,dob,age,gender,score)
self.super_score=super_score

Spostudent_data=get_coach_data("work/stu5.txt")
Spostudent__list=Spostudent(Spostudent_data[0],Spostudent_data[1],Spostudent_data[2],Spostudent_data[3],Spostudent_data[4],Spostudent_data[5:])
print("姓名:%s 生日:%s 年龄:%s 性别:%s 分数:%s 特长分:%s"
%(Spostudent__list.name,Spostudent__list.dob, Spostudent__list.age, Spostudent__list.gender,Spostudent__list.top3(),Spostudent__list.super_score))

Artstudent_data=get_coach_data("work/stu6.txt")
Artstudent__list=Artstudent(Artstudent_data[0],Artstudent_data[1],Artstudent_data[2],Artstudent_data[3],Artstudent_data[4],Artstudent_data[5:])
print("姓名:%s 生日:%s 年龄:%s 性别:%s 分数:%s 特长分:%s"
%(Artstudent__list.name,Artstudent__list.dob, Artstudent__list.age, Artstudent__list.gender,Artstudent__list.top3(),Artstudent__list.super_score))
姓名:特长同学 生日:2020-10-5 年龄:20 性别:'男' 分数:[56, 58, 69] 特长分:180
姓名:特长同学 生日:2020-10-6 年龄:20 性别:'女' 分数:[91, 91, 92] 特长分:230

0
收藏
回复
全部评论(1)
时间顺序
AIStudio810259
#2 回复于2021-02

https://blog.csdn.net/livingbody/article/details/113774012

 

0
回复
在@后输入用户全名并按空格结束,可艾特全站任一用户