搬家具规则

家具

  • 家具分不同的类型,并占用不同的面积
  • 输出家具信息时,显示家具的类型和家具占用的面积

房子

  • 房子有自己的地址和占用的面积
  • 房子可以添加家具
    • 如果房子的剩余面积可以容纳家具,提示家具添加成功;
    • 否则提示添加失败
  • 输出房子信息时,可以显示房子的地址、占地面积、剩余面积
  • 查看房子中所有的家具

    类的设计

    可以提取两个类:家具类Item和房子类House
    每个类具备的属性和方法如下:
    image.png

    家具类

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

    房子类

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

    主程序逻辑

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

    代码实现

    ```python “””————————— Item家具类 —————————“”” class Item: def init(self, type, area):

    1. '''
    2. 创建家具类的初始化方法
    3. :param type: 家具类型
    4. :param area: 家具面积
    5. '''
    6. self.type = type
    7. self.area = area

    def str(self):

    return ‘str家具类型: {},家具占用面积: {}’.format(self.type, self.area)

    def repr(self):

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

“””————————— House房子类 —————————“”” class House: def init(self, address, area): ‘’’ 房子的初始化方法 :param address: 房子地址 :param area: 房子面积 ‘’’ self.address = address self.area = area

  1. # 剩余面积
  2. self.free_area = self.area
  3. # 家具列表
  4. self.items = []
  5. def __str__(self):
  6. return '房子地址: {},占地面积: {},剩余面积: {}'.format(self.address, self.area, self.free_area)
  7. def add_item(self, item):
  8. """
  9. 添加家具到房子中
  10. :param item: 家具类Item的实例
  11. :return:
  12. """
  13. if self.free_area >= item.area:
  14. # 家具添加到列表中
  15. self.items.append(item)
  16. # 修改剩余面积
  17. self.free_area -= item.area
  18. # 可以添加
  19. print('添加成功')
  20. else:
  21. # 不能添加
  22. print('面积不足, 不能添加家具')

创建家具

item1 = Item(‘桌子’, 40) item2 = Item(‘椅子’, 10) item3 = Item(‘家庭影院’, 80) print(item1) print(item2) print(item3)

创建房子

house = House(‘深圳湾一号’, 100)

打印家具

print(house)

print(“——————————————————————-“)

添加家具

house.add_item(item1) house.add_item(item2) house.add_item(item3) print(house) print(“所有家具: “, house.items) ``` 扩展: :::success

  • __str__方法返回一个友好的、可读性较高的字符串,主要用于用户可见的输出,强调可读性和易理解性。常用于直接print对象。
  • __repr__方法返回一个准确和详细的字符串,主要用于开发和调试过程中,强调准确性和完整性。常用于打印listsetdict等内部的所有对象 :::