day16-作業(yè)

1.建立一個(gè)汽車類Auto,包括輪胎個(gè)數(shù),汽車顏色,車身重量,速度等屬性,并通過(guò)不同的構(gòu)造方法創(chuàng)建實(shí)例。至少要求 汽車能夠加速 減速 停車。 再定義一個(gè)小汽車類CarAuto 繼承Auto 并添加空調(diào)、CD屬性,并且重新實(shí)現(xiàn)方法覆蓋加速、減速的方法

class Auto:
    tire = 4

    def __init__(self, color, weight, speed):
        self.color = color
        self.weight = weight
        self.speed = speed

    def add_speed(self):
        print('加速1')

    @classmethod
    def sub_speed(self):
        print('減速1')

    @staticmethod
    def stop():
        print('停車!1')


class CarAuto(Auto):
    kt = '空調(diào)'
    cd = 'cd'

    def add_speed(self):
        print('加速2')

    @classmethod
    def sub_speed(cls):
        print('減速2')


car = CarAuto('黑色', 1400, 240)

print(car.color, car.weight, car.speed)
print(CarAuto.kt, CarAuto.cd)

car.add_speed()
CarAuto.sub_speed()

2.創(chuàng)建一個(gè)Person類,添加一個(gè)類字段用來(lái)統(tǒng)計(jì)Perosn類的對(duì)象的個(gè)數(shù)

class Person:
    all_number = 0

    def __init__(self):
        Person.all_number += 1

    def __del__(self):
        Person.all_number -= 1

    @classmethod
    def show_num(cls):
        print('目前被創(chuàng)造的對(duì)象個(gè)數(shù):{}'.format(Person.all_number))


Person.show_num()

all_person_list = []                 # 對(duì)象列表
for i in range(50):                  # 建造50個(gè)對(duì)象
    all_person_list.append(Person())

Person.show_num()

for i in range(15):                  # 刪除15個(gè)對(duì)象
    all_person_list.pop()

Person.show_num()

目前被創(chuàng)造的對(duì)象個(gè)數(shù):0
目前被創(chuàng)造的對(duì)象個(gè)數(shù):50
目前被創(chuàng)造的對(duì)象個(gè)數(shù):35

3.創(chuàng)建一個(gè)動(dòng)物類,擁有屬性:性別、年齡、顏色、類型 ,

要求打印這個(gè)類的對(duì)象的時(shí)候以'/XXX的對(duì)象: 性別-? 年齡-? 顏色-? 類型-?/' 的形式來(lái)打印

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

    def show(self):
        print('{}的對(duì)象:性別-{} 年齡-{} 顏色-{} 類型-{}'.format(self.__class__,self.sex,self.age,self.color,self.kind))


a = Animal('公',3,'黑色','狗')

a.show()

<class '__main__.Animal'>的對(duì)象:性別-公 年齡-3 顏色-黑色 類型-狗

4.寫一個(gè)圓類, 擁有屬性半徑、面積和周長(zhǎng);要求獲取面積和周長(zhǎng)的時(shí)候的時(shí)候可以根據(jù)半徑的值把對(duì)應(yīng)的值取到。但是給面積和周長(zhǎng)賦值的時(shí)候,程序直接崩潰,并且提示改屬性不能賦值

class Circle:
    pi = 3.141592653

    def __init__(self,r):
        self.r = r
        self._area = 0
        self._perimeter = 0

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

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

    @property
    def perimeter(self):
        return Circle.pi * self.r * 2

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


a = Circle(5)
print(a.area)
print(a.perimeter)

# a.area = 100
# a.perimeter = 100

5.寫一個(gè)撲克類, 要求擁有發(fā)牌和洗牌的功能(具體的屬性和其他功能自己根據(jù)實(shí)際情況發(fā)揮)

from random import *


class Poker:

    def __init__(self):
        self.card_list = [i + str(j) for i in ['紅桃', '黑桃', '方塊', '梅花'] for j in range(2, 11)] + [i + j for i in ['紅桃', '黑桃', '方塊', '梅花'] for j in ['A', 'J', 'Q', 'K']]

    def shuffle_card(self):
        shuffle(self.card_list)

    def get_card(self):
        new_card = iter(self.card_list)
        num = input('你想發(fā)幾張牌:')
        for _ in range(int(num)):
            print(next(new_card))


a = Poker()        # 生成牌對(duì)象
a.shuffle_card()   # 打亂牌序
a.get_card()       # 發(fā)牌

你想發(fā)幾張牌:7
紅桃7
黑桃5
梅花K
方塊9
紅桃5
紅桃8
黑桃6

6.(嘗試)寫一個(gè)類,其功能是:1.解析指定的歌詞文件的內(nèi)容 2.按時(shí)間顯示歌詞 提示:歌詞文件的內(nèi)容一般是按下面的格式進(jìn)行存儲(chǔ)的。歌詞前面對(duì)應(yīng)的是時(shí)間,在對(duì)應(yīng)的時(shí)間點(diǎn)可以顯示對(duì)應(yīng)的歌詞
[00:00.20]藍(lán)蓮花
[00:00.80]沒(méi)有什么能夠阻擋
[00:06.53]你對(duì)自由地向往
[00:11.59]天馬行空的生涯
[00:16.53]你的心了無(wú)牽掛
[02:11.27][01:50.22][00:21.95]穿過(guò)幽暗地歲月
[02:16.51][01:55.46][00:26.83]也曾感到彷徨
[02:21.81][02:00.60][00:32.30]當(dāng)你低頭地瞬間
[02:26.79][02:05.72][00:37.16]才發(fā)覺腳下的路
[02:32.17][00:42.69]心中那自由地世界
[02:37.20][00:47.58]如此的清澈高遠(yuǎn)
[02:42.32][00:52.72]盛開著永不凋零
[02:47.83][00:57.47]藍(lán)蓮花

lyrics = """
[00:00.20]藍(lán)蓮花   
[00:00.80]沒(méi)有什么能夠阻擋   
[00:06.53]你對(duì)自由地向往   
[00:11.59]天馬行空的生涯  
[00:16.53]你的心了無(wú)牽掛   
[02:11.27][01:50.22][00:21.95]穿過(guò)幽暗地歲月   
[02:16.51][01:55.46][00:26.83]也曾感到彷徨   
[02:21.81][02:00.60][00:32.30]當(dāng)你低頭地瞬間  
[02:26.79][02:05.72][00:37.16]才發(fā)覺腳下的路   
[02:32.17][00:42.69]心中那自由地世界  
[02:37.20][00:47.58]如此的清澈高遠(yuǎn)   
[02:42.32][00:52.72]盛開著永不凋零   
[02:47.83][00:57.47]藍(lán)蓮花
"""


class Lyrics:

    def __init__(self: str, lyc):
        self.lyc = lyc

    def parsing(self):                                             # 解析函數(shù)
        list1 = self.lyc.split('\n')                               # 去除換行符
        list1 = [i for i in list1 if i != '']                      # 去除空元素
        list1 = [i.strip() for i in list1]                         # 去除空格

        list2 = [[float(i[j:j + 10][1:3] + i[j:j + 10][4:9]),      # 分析歌詞切片成需要的列表
                  i[i.rfind(']') + 1:]] for i in list1 for j \
                 in range(len(i) - 9) if i[j] == '[']

        list2.sort(key=lambda x: x[0])                             # 將列表以時(shí)間大小的順序排列

        return list2

    def show_lyc(self, time1: str):                                # 顯示函數(shù)
        time1 = float(time1[0:2] + time1[3:])                      # 將輸入的字符串轉(zhuǎn)化成浮點(diǎn)以比較時(shí)間大小

        for each in range(len(self.parsing())):                    # 遍歷列表,找到大于輸入時(shí)間的元素返回上一句歌詞
            if time1 <= self.parsing()[each][0]:
                return self.parsing()[each-1][1]


a = Lyrics(lyrics)

print(a.show_lyc('00:15.53'))
print(a.show_lyc('02:15.60'))
print(a.show_lyc('00:49.58'))

天馬行空的生涯
穿過(guò)幽暗地歲月
如此的清澈高遠(yuǎn)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容