• Python 知识要点:案例:摆放家具


    【需求】

    • 房子(House)有户型,总面积和家具名称列表,新房没有家具
    • 家具(HouseItem)有名字和占地面积,床(4m2),柜(2m2),桌(1.5m2
    • 将三件家具添加到房中
    • 打印房子时,要求输出:户型,总面积,剩余面积,家具名列表

    【剩余面积】

    • 在创建房子对象时,定义剩余面积,其初始值和总面积相等
    • 当调用 add_item 方法时,向房内添加家具,剩余面积 = 剩余面积 - 家具面积

    【添加家具】

    • 判断家具面积是否超过剩余面积,超过就提示不能添加
    • 将家具的名称追加到家具名称列表中
    • 用房子的剩余面积 - 家具面积

    【小结】

    • 先开发家具类,房子要使用到家具,被使用的类通常先开发
    • 创建房子类要使用到 __init__ 和 __str__ 两个内置方法
    • 准备了一个 add_item 方法准备添加家具
    • 使用房子类创建了一个房子对象
    • 让房子对象调用三次 add_item 方法,将家具以实参传递到 add_item 内部
    • 主程序只负责创建房子对象和家具对象
    • 让房子对象调用 add_item 方法将家具添加到房子中
    • 面积计算,剩余面积和家具列表等处理都被封装到房子类的内部
    # 家具类
    class HouseItem:
        def __init__(self, name, area):
            self.name = name
            self.area = area
    
        def __str__(self):
            return "[%s] 占地 %.2f" % (self.name, self.area)
    
    
    # 类与类之间空两行
    # 房子类
    class House:
        def __init__(self, house_type, area):
            self.house_type = house_type
            self.area = area
    
            # 剩余面积
            self.free_area = area
    
            # 家具名称列表
            self.item_list = []
    
        def __str__(self):
            return ("户型: %s
    总面积: %.2f[剩余: %.2f]
    家具: %s"
                    % (self.house_type, self.area,
                       self.free_area, self.item_list))
    
        def add_item(self, item):
            print("要添加 %s" % item)
    
            # 1.判断家具的面积
            if item.area > self.free_area:
                print("%s 的面积太大,房内剩余空间不足" % item.name)
                return
    
            # 2.将家具的名称添加到列表中
            self.item_list.append(item.name)
    
            # 3.计算剩余面积
            self.free_area -= item.area
    
    
    # 1.创建家具
    bed = HouseItem("西蒙斯", 4)
    chest = HouseItem("衣柜", 2)
    table = HouseItem("餐桌", 1.5)
    
    print(bed)
    print(chest)
    print(table)
    
    # 2.创建房子对象
    my_home = House("两室一厅", 70)
    
    my_home.add_item(bed)
    my_home.add_item(chest)
    my_home.add_item(table)
    
    print(my_home)
    从现在开始,种下梦想中的参天大树
  • 相关阅读:
    使用阿里云接口进行银行卡四要素实名认证
    使用阿里云接口进行银行卡三要素实名认证(阿里云api接口java)
    如何使用阿里云进行人脸和身份证头像验证比对(人证核验接口API)--java
    PHP语言对用户输入的身份证信息进行实名认证(api接口)
    Python 语言如何对身份证真实性进行实名认证(api接口)
    如何对网站用户进行实名认证
    PLSQL Developer 连接oracle(64)(instantclient_32)
    struts2的防止表单重复提交
    JSP静态化(伪静态)
    Jmeter中压力测试带验证码的登录功能
  • 原文地址:https://www.cnblogs.com/dc2019/p/13182963.html
Copyright © 2020-2023  润新知