1.建立一個(gè)汽車類Auto缓艳,包括輪胎個(gè)數(shù)校摩,汽車顏色,車身重量阶淘,速度等屬性衙吩,并通過不同的構(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è)類字段用來統(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ì)象: 性別-? 年齡-? 顏色-? 類型-?/' 的形式來打印
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è)圓類, 擁有屬性半徑裸影、面積和周長挣轨;要求獲取面積和周長的時(shí)候的時(shí)候可以根據(jù)半徑的值把對(duì)應(yī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]沒有什么能夠阻擋
[00:06.53]你對(duì)自由地向往
[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]當(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]沒有什么能夠阻擋
[00:06.53]你對(duì)自由地向往
[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]當(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'))
天馬行空的生涯
穿過幽暗地歲月
如此的清澈高遠(yuǎn)