2019-08-10day15作业

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

class Auto:
    def __init__(self, tire, color, weight, speed):
        if tire % 2 == 0 and tire >= 4:
            self.tire = tire
        else:
            raise ValueError
        self.color = color
        self.weight = weight
        self.speed = speed

    def speed_up(self, add_speed):
        self.speed += add_speed
        return '加速后速度为:%f' % self.speed

    def speed_down(self, down_speed):
        self.speed -= down_speed
        return '减速后速度为:%f' % self.speed

    def __repr__(self):
        return self.__dict__


class CarAuto(Auto):
    def __init__(self, tire, color, weight, speed, air_conditioner='off', cd_player='off'):
        super().__init__(tire, color, weight, speed)
        self.air_conditioner = air_conditioner
        self.cd_player = cd_player


c1 = Auto(4, 'black', '1吨', 60)
print(c1.__repr__())

c1.speed_up(40)
print(c1.__repr__())

c1.speed_down(20)
print(c1.__repr__())

c2 = CarAuto(8, 'red', '5吨', 70)
print(c2.__repr__())

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

class Person:
    count = 0

    def __init__(self, name, age, gender):
        self._name = name
        self.age = age
        self.gender = gender
        Person.count += 1


    @classmethod
    def count1(cls):
        return Person.count


p1 = Person('王力', 23, 1)
p2 = Person('王力', 23, 1)
p3 = Person('王力', 23, 1)
p4 = Person('王力', 23, 1)
p5 = Person('王力', 23, 1)

print(Person.count1())

3.创建一个动物类,拥有属性:性别、年龄、颜色、类型 ,
要求打印这个类的对象的时候以'/XXX的对象: 性别-? 年龄-? 颜色-? 类型-?/'的形式来打印

class Animal:
    def __init__(self, kind, gender, age, color):
        self.gender = gender
        self.age = age
        self.color = color
        self.kind = kind

    def information(self):
        print('{}的对象: 性别-{} 年龄-{} 颜色-{} 类型-{}'.format(self.__class__.__name__, self.gender, self.age,
                                                      self.color, self.kind))


a1 = Animal('狗', 2, 13, 'red')
a1.information()

4.写一个圆类, 拥有属性半径、面积和周长;要求获取面积和周长的时候的时候可以根据半径的值把对应的值取到。
但是给面积和周长赋值的时候,程序直接崩溃,并且提示改属性不能赋值

from math import pi


class PropertyError(Exception):
    def __str__(self):
        return '属性不能赋值'


class Circle:
    def __init__(self, r):
        self.r = r
        self._area = pi * r ** 2
        self._perimeter = 2 * pi * r

    @property
    def area(self):
        return self._area

    @area.setter
    def area(self, value):
        raise EnvironmentError

    @property
    def perimeter(self):
        return self._area

    @perimeter.setter
    def perimeter(self, value):
        raise PropertyError


c1 = Circle(5)
print(c1.perimeter, c1.area)

c1.r = 6
print(c1.perimeter, c1.area)

c1.perimeter = 45

5.写一个扑克类, 要求拥有发牌和洗牌的功能(具体的属性和其他功能自己根据实际情况发挥)

import random


class Pokers:

    def __init__(self):
        self.pokers = []
        for point in range(1, 11):
            for color_shape in ('♦', '♥', '♠', '♣'):
                self.pokers.append([point, color_shape])
        for point in ('J', 'Q', 'K'):
            for color_shape in ('♦', '♥', '♠', '♣'):
                self.pokers.append([point, color_shape])
        self.pokers.append('KING')
        self.pokers.append('king')
        # print(self.pokers)
    
    # 洗牌方法:
    def shuffle(self):
        random.shuffle(self.pokers)
        return self.pokers

    # 斗地主发牌方法:
    def dealer(self, nums1=20, nums2=17, nums3=17):
        Pokers.shuffle(self)
        if 0 < nums1 + nums2 + nums3 < 55:
            iter1 = iter(self.pokers)
            print('======================斗地主==========================')
            for i in range(0, 20):
                print(next(iter1))
            print('======================农民1==========================')
            for i in range(20, 37):
                print(next(iter1))
            print('======================农民2==========================')
            for i in range(37, 54):
                print(next(iter1))
        else:
            raise ValueError


p2 = Pokers()
print(p2.pokers)
p2.shuffle()
print(p2.pokers)
p2.dealer()
p2.dealer()

6.(尝试)写一个类,其功能是:
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]蓝莲花
class Lyric:
    def __init__(self, time, word):
        value = float(time[1:3])*60 + float(time[4:])
        self.time = value
        self.word = word

    def __repr__(self):
        return '<'+str(self.time) + ':' + self.word+'>'

    def __gt__(self, other):
        return self.time > other.time


class LyricAnalysis:

    def __init__(self, name):
        # 歌名
        self.name = name
        self.__all_lyrics = []

    def get_word(self, time):
        # =======解析歌词文件======
        if not self.__all_lyrics:
            print('解析歌词')
            with open('files/'+self.name) as f:
                while True:
                    line = f.readline()
                    if not line:
                        break
                    lines = line.split(']')
                    word = lines[-1]
                    for t in lines[:-1]:
                        lyric = Lyric(t, word)
                        self.__all_lyrics.append(lyric)

            # 排序
            self.__all_lyrics.sort(reverse=True)

        # ==========获取歌词==========
        for lyric in self.__all_lyrics:
            if lyric.time <= time:
                return lyric.word


ly = LyricAnalysis('蓝莲花')
print('===:',ly.get_word(123))
print('===:',ly.get_word(10))
print('===:',ly.get_word(89))

ly2 = LyricAnalysis('一首简单的歌')
print('!!!:', ly2.get_word(30))
print('!!!:', ly2.get_word(90))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 建立一个汽车类Auto,包括轮胎个数,汽车颜色,车身重量,速度等属性,并通过不同的构造方法创建实例。至少要求 汽车...
    llllllIllllll阅读 365评论 0 0
  • 建立一个汽车类Auto,包括轮胎个数,汽车颜色,车身重量,速度等属性,并通过不同的构造方法创建实例。至少要求 汽车...
    冯书简阅读 244评论 0 0
  • 建立一个汽车类Auto,包括轮胎个数,汽车颜色,车身重量,速度等属性,并通过不同的构造方法创建实例。至少要求 汽车...
    浩子_唯一号阅读 160评论 0 1
  • 建立一个汽车类Auto,包括轮胎个数,汽车颜色,车身重量,速度等属性,并通过不同的构造方法创建实例。至少要求 汽车...
    数番番阅读 155评论 0 0
  • day15-作业 1. 建立一个汽车类Auto,包括轮胎个数,汽车颜色,车身重量,速度等属性,并通过不同的构造方法...
    Octane阅读 191评论 0 1

友情链接更多精彩内容