- 建立一个汽车类Auto,包括轮胎个数,汽车颜色,车身重量,速度等属性,并通过不同的构造方法创建实例。至少要求 汽车能够加速 减速 停车。 再定义一个小汽车类CarAuto 继承Auto 并添加空调、CD属性,并且重新实现方法覆盖加速、减速的方法
class Auto:
def __init__(self, tire_num, car_color, car_weight, speed=0):
self.tire_num = tire_num
self.car_color = car_color
self.car_weight = car_weight
self.speed = speed
def __repr__(self):
return f'<{str(self.__dict__)[1:-1]}>'
def up_speed(self, speed):
"""加速"""
self.speed += speed
def down_speed(self, speed):
"""减速"""
self.speed -= speed
def stop_car(self):
"""停车"""
self.speed = 0
class CarAuto(Auto):
def __init__(self, tire_num, car_color, car_weight, speed, air_conditioner, cd):
super().__init__(tire_num, car_color, car_weight, speed)
self.air_conditioner = air_conditioner
self.cd = cd
def up_speed(self, speed):
self.speed += speed
def down_speed(self, speed):
self.speed -= speed
car = CarAuto(4, '白', 2000, 100, True, True)
print(car) # <'tire_num': 4, 'car_color': '白', 'car_weight': 2000, 'speed': 100, 'air_conditioner': True, 'cd': True>
car.up_speed(10)
print(car) # <'tire_num': 4, 'car_color': '白', 'car_weight': 2000, 'speed': 110, 'air_conditioner': True, 'cd': True>
car.down_speed(30)
print(car) # <'tire_num': 4, 'car_color': '白', 'car_weight': 2000, 'speed': 80, 'air_conditioner': True, 'cd': True>
car.stop_car()
print(car) # <'tire_num': 4, 'car_color': '白', 'car_weight': 2000, 'speed': 0, 'air_conditioner': True, 'cd': True>
- 创建一个Person类,添加一个类字段用来统计Perosn类的创建过的对象的个数
class Person:
person_num = 0
def __init__(self, name, age='18', gender='男'):
self.name = name
self.age = age
self.gender = gender
Person.person_num += 1
def __repr__(self):
return f'<{str(self.__dict__)[1:-1]}>'
p1 = Person('小明')
p2 = Person('小红')
p3 = Person('小花')
print(Person.person_num) # 3
- 创建一个动物类,拥有属性:性别、年龄、颜色、类型 ,
要求打印这个类的对象的时候以’/XXX的对象: 性别-? 年龄-? 颜色-? 类型-?/’ 的形式来打印
class Animal:
"""动物类"""
def __init__(self, var, gender, age, color):
self.var = var
self.gender = gender
self.age = age
self.color = color
def show_animal(self):
print(f'/{self.__doc__}的对象:性别-{self.gender} 年龄-{self.age} 颜色-{self.color} 类型-{self.var}/')
cat = Animal('英短猫', '公', 3, '白色')
cat.show_animal() # /动物类的对象:性别-公 年龄-3 颜色-白色 类型-英短猫/
- (不写)写一个圆类, 拥有属性半径、面积和周长;要求获取面积和周长的时候的时候可以根据半径的值把对应的值取到。但是给面积和周长赋值的时候,程序直接崩溃,并且提示改属性不能赋值
- 写一个扑克类, 要求拥有发牌和洗牌的功能(具体的属性和其他功能自己根据实际情况发挥)
# -*- coding : utf-8 -*-
"""
Time:2021/2/24 16:51
Author:Maple12138
"""
from random import shuffle
class Poker:
"""扑克类"""
colors = ['♥', '♠', '♣', '♦']
numbers = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'joker', 'JOKER']
table1 = {'J': 11, 'Q': 12, 'K': 13, 'A': 14, '2': 15, 'joker': 16, 'JOKER': 17}
def __init__(self, color, number):
self.color = color
self.number = number
def __repr__(self):
return f'{self.color}{self.number}'
def get_poker_value(self):
number = self.number
if '3' <= number <= '9' or number == '10':
return int(number)
return Poker.table1[number]
def __lt__(self, other):
return self.get_poker_value() < other.get_poker_value()
class PokerGame:
"""扑克游戏"""
def __init__(self):
"""生成牌"""
self.poker = []
for n in Poker.numbers[:-2]:
for c in Poker.colors:
p = Poker(c, n)
self.poker.append(p)
self.poker.extend([Poker('', Poker.numbers[-2]), Poker('', Poker.numbers[-1])])
# print(self.poker)
def shuffle(self):
"""洗牌"""
shuffle(self.poker)
return self.poker
def deal(self):
"""发牌"""
self.shuffle()
p1 = []
p2 = []
p3 = []
for _ in range(17):
p1.append(self.poker.pop(0))
p2.append(self.poker.pop(0))
p3.append(self.poker.pop(0))
return f'Player1:{sorted(p1, reverse=True)}',\
f'Player2:{sorted(p2, reverse=True)}',\
f'Player3:{sorted(p3, reverse=True)}', \
f'底牌:{sorted(self.poker)}'
game1 = PokerGame()
print(game1.deal())
- (尝试)写一个类,其功能是: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 Music:
def __init__(self, time=0, lyrics=0):
self.time = time
self.lyrics = lyrics
@staticmethod
def get_time(path):
with open(path, encoding='utf-8') as f:
content = f.read()
re_str1 = r'\[\d{2}:\d{2}\.\d{2}\].+'
time_lyrics = re.findall(re_str1, content)
music = []
re_str2 = r'\[\d{2}:\d{2}\.\d{2}\]'
re_str3 = r'[\u4e00-\u9fa5]+'
for x in time_lyrics:
lyrics = re.findall(re_str3, x)
time = re.findall(re_str2, x)
length = len(time)
for index in range(length):
music.append(time[index]+lyrics[0])
new_music = {}
for z in music:
time = re.findall(re_str2, z)[0]
lyrics = re.findall(re_str3, z)[0]
new_music[time] = lyrics
n = sorted(new_music)
for k in n:
print(k, new_music[k])
m1 = Music()
m1.get_time('../file/music.txt')