day15-homework

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

    def speedup(self, num):
        self.speed += num

    def speed_down(self, num):
        self.speed -= num
        if self.speed < 0:
            self.speed = 0

    def stop(self):
        self.speed = 0


class CarAuto(Auto):
    def __init__(self, tyre_num, color, speed, air_condition, cd):
        super().__init__(tyre_num, color, speed)
        self.air_condition = air_condition
        self.cd = cd
    
    def speedup(self, target):
        if self.speed < target:
            self.speed = target
        else:
            raise ValueError
    
    def speed_down(self, target):
        if self.speed > target:
            self.speed = target
        else:
            raise ValueError
  1. 创建一个Person类,添加一个类字段用来统计Perosn类的对象的个数
class Person:
    num = 0

    def __init__(self):
        Person.num += 1
  1. 创建一个动物类,拥有属性:性别、年龄、颜色、类型 ,
    要求打印这个类的对象的时候以'/XXX的对象: 性别-? 年龄-? 颜色-? 类型-?/' 的形式来打印
class Animal:
    def __init__(self, gender, age, color, type):
        self.gender = gender
        self.age = age
        self.color = color
        self.type = type

    def __repr__(self):
        return '/{}的对象:性别-{} 年龄-{} 颜色-{} 类型-{}/'.format(Animal.__name__, self.gender, self.age,
                                                        self.color, self.type)


animal = Animal('雄性', 3, '黑色', '中华田园犬')
print(animal)
  1. 写一个圆类, 拥有属性半径、面积和周长;要求获取面积和周长的时候的时候可以根据半径的值把对应的值取到。但是给面积和周长赋值的时候,程序直接崩溃,并且提示改属性不能赋值
class WriteError(Exception):
    def __str__(self):
        return 'This Value Read Only!'


class Circle:
    def __init__(self, radius: int):
        self.radius = radius
        self._area = None
        self._perimeter = None

    @property
    def area(self):
        return 3.14*self.radius**2

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

    @property
    def perimeter(self):
        return 2*self.radius*3.14

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


circle1 = Circle(6)
print(circle1.area, circle1.perimeter)    # 113.04 37.68
circle1.area = 300    # __main__.WriteError: This Value Read Only!
circle1.perimeter = 80    # __main__.WriteError: This Value Read Only!
  1. 写一个扑克类, 要求拥有发牌和洗牌的功能(具体的属性和其他功能自己根据实际情况发挥)
class Poker:
    def __init__(self):
        self.card_type = ['♥', '♠', '♦', '♣']
        self.card_values = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']
        self.jokers = ['★Joker', '☆joker']
        self.cards = [x+y for x in self.card_type for y in self.card_values] + self.jokers
        self.landlord_determine_card = None
        self.landlord_cards = None

    def shuffle(self):
        count = 0
        print('开始洗牌!')
        time.sleep(0.8)
        num = int(input('请输入洗牌次数:'))
        time.sleep(0.8)
        for _ in range(num):
            count += 1
            print('正在进行第{}次洗牌,请稍等...'.format(count))
            random.shuffle(self.cards)
            time.sleep(1.5)
        print('洗牌完成!')

    def determine_the_landlord(self):
        time.sleep(2)
        print('\n开始抽取底牌!')
        time.sleep(1)
        print('正在抽取3张底牌,请稍等...')
        self.landlord_cards = self.cards[-3:]
        time.sleep(2)
        print('抽取完成!底牌为{}'.format(self.landlord_cards))
        time.sleep(3)
        print('\n正在确定地主牌,请稍等...')
        self.cards = self.cards[:52]
        self.landlord_determine_card = random.choices(self.cards)[0]
        time.sleep(2)
        print('地主牌为{},抽到的玩家默认为地主!'.format(self.landlord_determine_card))

    def deal(self):
        meg1 = '\n******你是地主,获得底牌!******'
        meg2 = '\n***Player1是地主,获得底牌!***'
        meg3 = '\n***Player2是地主,获得底牌!***'
        meg4 = '\n***Player3是地主,获得底牌!***'
        meg5 = '你的手牌:'
        time.sleep(2)
        while True:
            print('\n①.Player1\n②.Player2\n③.Player3')
            player = int(input('请选择角色:'))
            if player not in [1, 2, 3]:
                time.sleep(0.3)
                print('请输入对应数字以选择角色!')
                time.sleep(1)
            else:
                time.sleep(0.2)
                print('选择完成!')
                time.sleep(1)
                print('\n开始发牌!')
                time.sleep(1)
                print('发牌中,请稍等...')
                player1_cards = self.cards[:2]
                player2_cards = self.cards[2:4]
                player3_cards = self.cards[4:6]
                for num in range(5):
                    player1_cards += self.cards[6+num*9:(num+1)*9]
                    player2_cards += self.cards[9+num*9:12+num*9]
                    player3_cards += self.cards[12+num*9:15+num*9]
                time.sleep(3)
                print('发牌完成!')
                time.sleep(2)
                if self.landlord_determine_card in player1_cards:
                    player1_cards += self.landlord_cards
                    if player == 1:
                        print(meg1)
                        time.sleep(1.5)
                        print(meg5)
                        return player1_cards
                    elif player == 2:
                        print(meg2)
                        time.sleep(1.5)
                        print(meg5)
                        return player2_cards
                    elif player == 3:
                        print(meg2)
                        time.sleep(1.5)
                        print(meg5)
                        return player3_cards
                elif self.landlord_determine_card in player2_cards:
                    player2_cards += self.landlord_cards
                    if player == 1:
                        print(meg3)
                        time.sleep(1.5)
                        print(meg5)
                        return player1_cards
                    elif player == 2:
                        print(meg1)
                        time.sleep(1.5)
                        print(meg5)
                        return player2_cards
                    elif player == 3:
                        print(meg3)
                        time.sleep(1.5)
                        print(meg5)
                        return player3_cards
                elif self.landlord_determine_card in player3_cards:
                    player3_cards += self.landlord_cards
                    if player == 1:
                        print(meg4)
                        time.sleep(1.5)
                        print(meg5)
                        return player1_cards
                    elif player == 2:
                        print(meg4)
                        time.sleep(1.5)
                        print(meg5)
                        return player2_cards
                    elif player == 3:
                        print(meg1)
                        time.sleep(1.5)
                        print(meg5)
                        return player3_cards

    def compositor(self):
        pass


def landlords():
    landlord = Poker()
    landlord.shuffle()
    landlord.determine_the_landlord()
    print(landlord.deal())


if __name__ == '__main__':
    landlords()
  1. (尝试)写一个类,其功能是: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]蓝莲花


你可能感兴趣的:(day15-homework)