- 建立一个汽车类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)
- 创建一个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)
- 创建一个动物类,拥有属性:性别、年龄、颜色、类型 ,
要求打印这个类的对象的时候以'/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,颜色:花,类型:猫
- 写一个圆类, 拥有属性半径、面积和周长;要求获取面积和周长的时候的时候可以根据半径的值把对应的值取到。但是给面积和周长赋值的时候,程序直接崩溃,并且提示改属性不能赋值
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
- 写一个扑克类, 要求拥有发牌和洗牌的功能(具体的属性和其他功能自己根据实际情况发挥)
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.解析指定的歌词文件的内容 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]蓝莲花