三、搬家具案例#

1. 搬家具规则#

1
2
3
4
5
6
1.家具分不同的类型,并占用不同的面积
2.输出家具信息时,显示家具的类型和家具占用的面积
3.房子有自己的地址和占用的面积
4.房子可以添加家具,如果房子的剩余面积可以容纳家具,则提示家具添加成功;否则提示添加失败
5.输出房子信息时,可以显示房子的地址、占地面积、剩余面积
6.查看房子中所有的家具

2. 类的设计#

可以提取两个类:家具类和房子类

每个类具备的属性和方法如下:

3. 家具类#

1
2
3
4
5
6
1.使用 Item 类可以创建 家具对象
2.家具有两个属性:
    家具类型 type:字符串
    家具面积 area:整数
3.实现__str__方法
4.显示家具的 type 和 area 属性

4. 房子类#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
1.使用 Home 类可以创建 房子对象
2.房子有四个属性:
    地址 address:字符串
    房子面积 area:整数
    房子剩余面积 free_area:整数,默认为房子的面积
    家具列表 items:列表
3.实现__str__方法
    显示房子的 address 、area、free_area 属性
4.实现add_item方法,提供item参数来添加家具
    如果 可以容纳家具:
        家具 加入 item属性
        剩余面积 减少
    如果 不能容纳家具: 提示家具添加失败

5. 主程序逻辑#

1
2
3
1.创建 家具对象, 输出 家具信息
2.创建 房子对象, 输出 房子信息
3.房子添加家具, 输出 房子信息

6 代码实现#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
"""------------------ 家具类 ------------------"""
class Item:
    def __init__(self,type,area):
        '''
        创建家具类的初始化方法
        :param type: 家具类型
        :param area: 家具面积
        '''
        self.type = type
        self.area = area

    def __str__(self):
        return '家具类型:{},家具占用面积:{}'.format(self.type,self.area)


"""------------------ Home ------------------"""
class Home:
    def __init__(self,address,area):
        '''
        房子的初始化方法
        :param address: 房子地址
        :param area: 房子面积
        '''
        self.address = address
        self.area = area
        # 剩余面积
        self.free_area = self.area
        # 家具列表
        self.items = []

    def __str__(self):
        return '房子地址:{},占地面积:{},剩余面积:{}'.format(self.address,self.area,self.free_area)


    # 有问题  1  没问题 2
    def add_item(self,item):
        '''
        添加家具到房子中
        :param item: 家具类Item的实例
        :return:
        '''
        if self.free_area >=  item.area:
            # 家具添加到列表中
            self.items.append(item)
            # 修改剩余面积
            self.free_area -= item.area
            # 可以添加
            print('添加成功')
        else:
            # 不能添加
            print('面积不足,不能添加家具')

# 创建家具
item1 = Item('桌子',10)
item2 = Item('椅子',5)

# 创建房子
home = Home('深圳湾一号',300)
# 打印家具
# print(item1)
# print(item2)
print(home)

"""------------------ 添加家具 ------------------"""
home.add_item(item1)
# print(home)
# print(home.items[0])
home.add_item(item2)
print(home)
print(home.items[0],home.items[1])