美文网首页
Day14--课后作业

Day14--课后作业

作者: zxhlcl | 来源:发表于2018-10-18 21:45 被阅读0次

    0.定义一个学生类。有属性:姓名、年龄、成绩(语文,数学,英语)[每课成绩的类型为整数]
    方法: a. 获取学生的姓名:getname() b. 获取学生的年龄:getage()
    c. 返回3门科目中最高的分数。get_course()
    一、创建实例不输入成绩,成绩随机生成

    import random
    
    class Student:
    
        key_math="math"
        key_chinese="chinese"
        key_english='english'
    
        score={key_chinese:random.randint(1,101),
               key_math:random.randint(1,101),
               key_english:random.randint(1,101)}
    
        def __init__(self,name,age):
            self.name=name
            self.age=age
            self.score=self.__class__.score
    
        def getname(self):
            return self.name
    
        def getage(self):
            return self.age
    
        def get_course(self):
            math=self.score.get(Student.key_math)
            chinese=self.score.get(Student.key_chinese)
            english=self.score.get(Student.key_english)
            return sorted([math,chinese,english],reverse=True)[0]
    
    stu=Student("小王",22)
    print(stu.getname())
    print(stu.getage())
    print(stu.get_course())
    '''
    小王
    22
    87
    '''
    

    二、创建实例后给属性赋值并检验
    setter和getter起始

    class Student:
    
        def __init__(self,name,age):
            self.name=name
            self.age=age
            self._score=()
    
        @property
        def score(self):
            return self._score
    
        @score.setter
        def score(self,score):
            try:
                for x in score:
                    if not isinstance(x,int):
                        raise TypeError("We expect score`type is  int")
                    if not 0 <= x <= 100:
                        raise ValueError("We expect score from 1 to 100")
            except (TypeError,ValueError) as e:
                print("You are a stupid guy!-->",e)
                self._score =None
            else:
                print("A correct score is Done")
                self._score=score
    
        def getname(self):
            return self.name
    
        def getage(self):
            return self.age
    
        def get_course(self):
            if self._score==None:
                return "没有成绩"
            else:
                return sorted(self._score,reverse=True)[0]
    
    stu=Student("小王",22)
    stu.score=(99,78,88)
    print(stu.get_course())
    stu.score=(99.5,78,88.8)
    print(stu.get_course())
    stu.score=(200,78,88.8)
    print(stu.get_course())
    '''
    A correct score is Done
    99
    You are a stupid guy!--> We expect score`type is  int
    没有成绩
    You are a stupid guy!--> We expect score from 1 to 100
    没有成绩
    
    '''
    

    1.建立一个汽车类Auto,包括轮胎个数,汽车颜色,车身重量,速度等成员变量,并通过不同的构造方法创建实例。至少要求 汽车能够加速 减速 停车。 再定义一个小汽车类CarAuto 继承Auto 并添加空调、CD等成员变量 覆盖加速 减速的方法

    class Auto:
    
        def __init__(self,wheel,color,weight):
            self.wheel = wheel
            self.color = color
            self.weight = weight
    
        def accelerate(self):
            print("加速")
    
        def slow_down(self):
            print("减速")
    
        def stop(self):
            print("停车")
    
    class CarAuto(Auto):
    
        def __init__(self,cd,air,wheel,color,weight):
            Auto.__init__(self, wheel, color,weight)
            self.cd=cd
            self.air_condition=air
    
        def __repr__(self):
            return str(self.__dict__)
    
        def accelerate(self):
            print("%s加速" % self.__class__.__name__)
    
        def slow_down(self):
            print("%s减速" % self.__class__.__name__)
    
    
    benz=CarAuto("cd","kongtiao",4,"blue",1000)
    print(benz)
    benz.accelerate()
    benz.slow_down()
    '''
    {'wheel': 4, 'color': 'blue', 'weight': 1000, 'cd': 'cd', 'air_condition': 'kongtiao'}
    CarAuto加速
    CarAuto减速
    '''
    

    2.创建一个名为User 的类,其中包含属性firstname 和lastname ,还有用户简介通常会存储的其他几个属性。在类User 中定义一个名 为describeuser() 的方法,它打印用户信息摘要;再定义一个名为greetuser() 的方法,它向用户发出个性化的问候。

    管理员是一种特殊的用户。编写一个名为Admin 的类,让它继承User类。添加一个名为privileges 的属性,用于存储一个由字符串(如"can add post"、"can delete post"、"can ban user"等)组成的列表。编写一个名为show_privileges()的方法,它显示管理员的权限。创建一个Admin 实例,并调用这个方法。

    3.创建一个Person类,添加一个类字段用来统计Perosn类的对象的个数

    (尝试)5.写一个类,其功能是:1.解析指定的歌词文件的内容 2.按时间显示歌词 提示:歌词文件的内容一般是按下面的格式进行存储的。歌词前面对应的是时间,在对应的时间点可以显示对应的歌词

    [00:00.20]蓝莲花
    [00:00.80]没有什么能够阻挡
    [00:06.53]你对自由地向往
    [00:11.59]天马行空的生涯
    [00:16.53]你的心了无牵挂
    [02:11.27][01:50.22][00:21.95]穿过幽暗地岁月
    [02:16.51][01:55.46][00:26.83]也曾感到彷徨
    [02:21.81][02:00.60][00:32.30]当你低头地瞬间
    [02:26.79][02:05.72][00:37.16]才发觉脚下的路
    [02:32.17][00:42.69]心中那自由地世界
    [02:37.20][00:47.58]如此的清澈高远
    [02:42.32][00:52.72]盛开着永不凋零
    [02:47.83][00:57.47]蓝莲花

    import re
    class AnalysisSong:
    
        def __init__(self,filename,time):
            self.filename = filename
            self.time=time*100
    
        @staticmethod
        def text_read(file_name):
            try:
                with open("./file/"+file_name,'r',encoding="utf-8") as f:
                    song=f.readlines()
                    col=[]
                    for sentence in song:
                        time=re.findall(r"\[(\d{2}\S\d{2}\S\d{2})\]", sentence)
                        chinese= ''.join(re.findall(r"[(\u4e00-\u9fa5))]", sentence))
                        if type(time) is list:
                            for i in range(0,len(time)):
                                temp=re.split("\D", time[i])
                                result=int(temp[2])+int(temp[1])*100+int(temp[0])*60*100
                                col.append((result,chinese))
                        else:
                            temp = re.split("\D", time)
                            result = int(temp[2])+int(temp[1])*100+int(temp[0])*60*100
                            col.apppend((result,chinese))
                    col.sort(key=lambda x: x[0]) #处理成毫秒级别并返回列表,列表元素为元组
                    return col
            except FileNotFoundError:
                print("%s文件不存在"% file_name)
                return None
    
        def analysis(self):
            songs=AnalysisSong.text_read(self.filename)
            if self.time<songs[0][0]:
                print("时间过短,歌词未开始")
            elif self.time>songs[len(songs)-1][0]:
                print('输入时间太长,歌词已结束')
            for i in range(0,len(songs)):
                if songs[i][0]<=self.time<=songs[i+1][0]:
                    print(songs[i][1])
    
    
    temp=AnalysisSong("song.txt",100)
    print(AnalysisSong.text_read(temp.filename))
    temp.analysis()
    
    '''
    结果为:
    [(20, '蓝莲花'), (80, '没有什么能够阻挡'), (113, '你对自由地向往'), (169, '天马行空的生涯'), (213, '你的心了无牵挂'), (305, '穿过幽暗地岁月'), (343, '也曾感到彷徨'), (350, '当你低头地瞬间'), (386, '才发觉脚下的路'), (489, '心中那自由地世界'), (528, '如此的清澈高远'), (592, '盛开着永不凋零'), (617, '蓝莲花'), (1122, '穿过幽暗地岁月'), (1196, '也曾感到彷徨'), (1260, '当你低头地瞬间'), (1322, '才发觉脚下的路'), (1337, '穿过幽暗地岁月'), (1411, '也曾感到彷徨'), (1491, '当你低头地瞬间'), (1537, '心中那自由地世界'), (1539, '才发觉脚下的路'), (1590, '如此的清澈高远'), (1652, '盛开着永不凋零'), (1753, '蓝莲花')]
    蓝莲花
    
    '''
    

    (选做)6.使用面向对象做一个游戏(打飞机和坦克,以及自己设计一个都行)

    相关文章

      网友评论

          本文标题:Day14--课后作业

          本文链接:https://www.haomeiwen.com/subject/wdjszftx.html