2019-08-09day15作业

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

    def __str__(self):
        return '%s,轮胎%s个,颜色%s,重量%s,速度 %s'%(self.name, self.num_of_tires, self.color, self.weight, self.speed)

    def speed_up(self):
        print('%s加速了' % self.name)

    def speed_cut(self):
        print('%s减速了' % self.name)

    def park(self):
        print('%s停车了' % self.name)


class CarAuto(Auto):
    def air_conditioner(self):
        print('%s是有空调的车车'%self.name)

    def cd(self):
        print('%s还可以听音乐'%self.name)

    def speed_up(self):
        print('%s的加速和别的车车不一样'%self.name)

    def speed_cut(self):
        print('%s的减速和别的车车不一样'%self.name)



byd = Auto('比亚迪', 4, '红', 20, 30)

print(byd)
Auto.speed_up(byd)
Auto.speed_cut(byd)
Auto.park(byd)

byd1 = CarAuto('升级版比亚迪', 8, '血红', 40, 60)
print(byd1)
CarAuto.air_conditioner(byd1)
CarAuto.cd(byd1)
CarAuto.speed_cut(byd1)
CarAuto.speed_up(byd1)
  1. 创建一个Person类,添加一个类字段用来统计Perosn类的对象的个数
class Person:
    count = 0
    def __init__(self,name):
        self.name = name

        Person.count += 1


r1 = Person('龙龙')
r2 = Person('君君')
r3 = Person('会会')
r4 = Person('墨墨')
print(Person.count)
  1. 创建一个动物类,拥有属性:性别、年龄、颜色、类型 ,
    要求打印这个类的对象的时候以'/XXX的对象: 性别-? 年龄-? 颜色-? 类型-?/' 的形式来打印
lass Animal:
    def __init__(self, gender, age, colour, type):
        self.gender = gender
        self.age = age
        self.colour = colour
        self.type = type

    def __str__(self):

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


a1 = Animal( '男', 3, '花', '猫')
print(a1)                             #Animal的对象:性别:男,年龄:3,颜色:花,类型:猫
  1. 写一个圆类, 拥有属性半径、面积和周长;要求获取面积和周长的时候的时候可以根据半径的值把对应的值取到。但是给面积和周长赋值的时候,程序直接崩溃,并且提示改属性不能赋值
from math import pi


class CircleValueError(Exception):
    def __str__(self):
        return '无法赋值'


class Circle:
    def __init__(self, radius, area = None, permeter = None):

        if (isinstance(radius,int) or isinstance(radius, float)) and radius > 0:
            self._radius = radius
        else:
            raise ValueError
        self._area = area
        self._permeter = permeter

    @property
    def radius(self):
        return self._radius

    @radius.setter
    def radius(self, value):
        if (isinstance(value,int)or isinstance(value, float)) and value > 0:
            self._radius = value
        else:
            raise ValueError

    @property
    def area(self):
        return pi * self._radius ** 2

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

    @property
    def permeter(self):
        return 2 * pi * self._radius

    @permeter.setter
    def permeter(self, value):
        raise CircleValueError


circle = Circle(4)
print(circle.area)
print(circle.permeter)
circle.area = 12
  1. 写一个扑克类, 要求拥有发牌和洗牌的功能(具体的属性和其他功能自己根据实际情况发挥)
from enum import Enum,unique
from random import shuffle


# 写一个扑克类,要求拥有发牌和洗牌的功能(具体属性和其他功能自己发挥)


@unique            #@unique确定唯一性
class PokerNum(Enum):
    J = 11, 'J', 11
    Q = 12, 'Q', 12
    K = 13, 'K', 13
    A = 1, 'A', 14
    TOW = 2, '2', 15
    JOKER = 15, '大王', 16
    joker = 14, '小王', 17


@unique
class PokerColor(Enum):
    Club = '♧'
    Diamond = '♢'
    Heart = '♡'
    Spade = '♤'
    Space= ''      #大小王需要的颜色定义为空


class Poker:
    def __init__(self, num: PokerNum, color: PokerColor):
        self.num = num
        self.color = color

    def __repr__(self):
        if isinstance(self.num, PokerNum):
            return str(self.color.value) + str(self.num.value[1])
        return str(self.color.value) + str(self.num)

    def __gt__(self, other):
        if isinstance(self.num, PokerNum):
            a = self.num.value[2]
        else:
            a = self.num

        if isinstance(other.num, PokerNum):
            b = other.num.value[2]
        else:
            b = other.num

        return a > b


# 斗地主
class Game:
    def __init__(self):
        pokers = []   #定义一个完整扑克牌列表
        colors = [PokerColor.Club, PokerColor.Diamond, PokerColor.Heart, PokerColor.Spade]
        nums = [PokerNum.A, PokerNum.TOW, 3, 4, 5, 6, 7, 8, 9, 10, PokerNum.J, PokerNum.Q, PokerNum.K]
        for num in nums:
            for color in colors:
                p = Poker(num, color)
                pokers.append(p)
                # extend 可以添加多个元素,但必须在列表里面添加
        pokers.extend([Poker(PokerNum.JOKER, PokerColor.Space), Poker(PokerNum.joker, PokerColor.Space)])
        # 以上将扑克牌花色与数字分配完成,成为一幅完整的扑克牌
        self.pokers = pokers
        self.pokers_iter = iter(self.pokers)

# 洗牌
    def shuffling(self):           #是将序列中的元素随机排列需要导入random模块
        shuffle(self.pokers)
        self.pokers_iter = iter(self.pokers)

    def deall(self):
        p1 = []
        p2 = []
        p3 = []
        for _ in range(17):
            p1.append(next(self.pokers_iter))
            p2.append(next(self.pokers_iter))
            p3.append(next(self.pokers_iter))
        p1.sort(reverse=True)
        p2.sort(reverse=True)
        p3.sort(reverse=True)
        return p1, p2, p3, list(self.pokers_iter)


game1 = Game()
game1.shuffling()
p1, p2, p3, di = game1.deall()
print(p1)
print(p2)
print(p3)
print('底牌:', di)
  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]蓝莲花
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 建立一个汽车类Auto,包括轮胎个数,汽车颜色,车身重量,速度等属性,并通过不同的构造方法创建实例。至少要求 汽车...
    漫磋嗟阅读 285评论 0 0
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,242评论 6 13
  • 建立一个汽车类Auto,包括轮胎个数,汽车颜色,车身重量,速度等属性,并通过不同的构造方法创建实例。至少要求 汽车...
    zero_Staynight阅读 85评论 0 0
  • 建立一个汽车类Auto,包括轮胎个数,汽车颜色,车身重量,速度等属性,并通过不同的构造方法创建实例。至少要求 汽车...
    浩子_唯一号阅读 149评论 0 1
  • 建立一个汽车类Auto,包括轮胎个数,汽车颜色,车身重量,速度等属性,并通过不同的构造方法创建实例。至少要求 汽车...
    容荔阅读 394评论 0 0