211-面向对象习题
搬家具
题干
搬家具规则:
- 家具分不同的类型,并占用不同的面积
- 输出家具信息时,显示家具的类型和家具占用的面积
- 房子有自己的地址和占用的面积
- 房子可以添加家具,如果房子的剩余面积可以容纳家具,则提示家具添加成功;否则提示添加失败
- 输出房子信息时,可以显示房子的地址、占地面积、剩余面积
运行效果:
当前房间可用面积为:100
床的面积为:20
ok:已经存放到房间中
当前房间可用面积为:80
容纳的物品有: 床
床的面积为:30
ok:已经存放到房间中
当前房间可用面积为:50
容纳的物品有: 床, 席梦思
代码
# 定义一个home类
class Home:
def __init__(self, area):
self.area = area #房间剩余的可用面积
self.containsItem = []
def __str__(self):
msg = "当前房间可用面积为:" + str(self.area)
if len(self.containsItem) > 0:
msg = msg + " 容纳的物品有: "
for temp in self.containsItem:
msg = msg + temp.getName() + ", "
msg = msg.strip(", ")
return msg
# 容纳物品
def accommodateItem(self,item):
# 如果可用面积大于物品的占用面积
needArea = item.getUsedArea()
if self.area > needArea:
self.containsItem.append(item)
self.area -= needArea
print("ok:已经存放到房间中")
else:
print("err:房间可用面积为:%d,但是当前要存放的物品需要的面积为%d"%(self.area, needArea))
# 定义bed类
class Bed:
def __init__(self,area,name = '床'):
self.name = name
self.area = area
def __str__(self):
msg = '床的面积为:' + str(self.area)
return msg
# 获取床的占用面积
def getUsedArea(self):
return self.area
def getName(self):
return self.name
# 创建一个新家对象
newHome = Home(100)#100平米
print(newHome)
# 创建一个床对象
newBed = Bed(20)
print(newBed)
# 把床安放到家里
newHome.accommodateItem(newBed)
print(newHome)
# 创建一个床对象
newBed2 = Bed(30,'席梦思')
print(newBed2)
# 把床安放到家里
newHome.accommodateItem(newBed2)
print(newHome)