练习-搬家具进房子

1. 搬家具规则

家具

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

房子

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

2. 类的设计

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

3. 家具类

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

4. 房子类

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

# 创建item类 创建家具对象
class Item:
    # 添加属性
    def __init__(self, type, area):
        # 家具类型
        self.type = type
        # 家具面积
        self.area = area

    # 打印对象属性信息
    def __str__(self):
        return f"家具类型:{self.type} 家具面积:{self.area}"


# 创建House类 创建房子对象
class House:
    # 添加属性
    def __init__(self, address, area):
        # 房子地址
        self.address = address
        # 房子总面子
        self.area = area
        # 房子剩余面积等于房子总面积
        self.free_area = self.area
        # 存放家具列表
        self.items = []

    def __init__(self, name):
        self.name = name

    # 添加家具方法
    def add_item(self, item):
        # 房子剩余面积大于等于家具面积 就可以添加
        if self.free_area >= item.area:
            # 将家具追加到家具列表
            self.items.append(item)
            # 剩余面积减去家具面积
            self.free_area -= item.area
            print("添加成功")
        else:
            print("不能容纳家具,添加失败")

    # 打印对象属性的信息
    def __str__(self):
        return f'地址:{self.address},面积:{self.area},剩余面积:{self.free_area}'


# 创建家具对象
item1 = Item("床", 12)
item2 = Item("桌子", 5)
item3 = Item("衣柜", 1)

# 创建房子对象
house = House("江苏", 20)
# 添加家具到房子
house.add_item(item1)
house.add_item(item2)
house.add_item(item3)
# 打印信息
print(house)

# 查询房子所有的家具
print("家具列表:")
for i in house.items:
    print(f"{i}")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/584537.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【linux-1-Ubuntu常用命令-vim编辑器-Vscode链接ubuntu远程开发】

目录 1. 安装虚拟机Vmare和在虚拟机上安装Ubuntu系统:2. 常用的Ubuntu常识和常用命令2.1 文件系统结构2.2 常用命令2.3 vim编辑器 3. Ubuntu能联网但是ping不通电脑:4. Windows上安装VScode链接ubuntu系统,进行远程开发: 1. 安装虚…

uni-app - 使用地图功能打包安卓apk的完美流程以及重要的注意事项(带您一次打包成功)

在移动应用开发中,地图功能是一个非常常见且实用的功能,可以帮助用户快速定位并浏览周边信息。而在uni-app开发中,使用地图功能也是一项必备技能。本文将介绍uni-app使用地图功能打包安卓apk的注意事项,帮助开发者顺利完成地图功能…

每日OJ题_DFS爆搜深搜回溯剪枝①_力扣784. 字母大小写全排列

目录 力扣784. 字母大小写全排列 解析代码1_path是全局变量 解析代码2_path是函数参数 力扣784. 字母大小写全排列 784. 字母大小写全排列 难度 中等 给定一个字符串 s ,通过将字符串 s 中的每个字母转变大小写,我们可以获得一个新的字符串。 返回…

Linux环境下的编译和调试

本文目录 一、编译1. gcc/g编译器2. gcc/g安装3. 代码编译过程4. gcc编译 二、调试1. 下载gdb调试器2. gdb 调试器使用步骤 一、编译 1. gcc/g编译器 对于.c 格式的 C 文件,可以采用 gcc 或 g编译。 对于.cc、.cpp 格式的 C文件,应该采用 g进行编译。 …

第一个Cython程序-helloworld

Cython是Python的一个模块,可以将python语言“翻译”成C语言。 如何安装? python -m pip install Cython -i https://pypi.tuna.tsinghua.edu.cn/simple/ 新建两个文件helloworld.pyx和setup.py。 helloworld.pyx print("hello world")setu…

【学习vue 3.x】(五)VueRouter路由与Vuex状态管理

文章目录 章节介绍本章学习目标 路由的基本搭建与嵌套路由模式vue路由的搭建嵌套路由模式 动态路由模式与编程式路由模式动态路由模式编程式路由 命名路由与命名视图与路由元信息命名路由命名视图路由元信息 路由传递参数的多种方式及应用场景路由传参 详解route对象与router对…

ubuntu开启message文件

环境:ubuntu 20.04 1、首先需要修改 /etc/rsyslog.d/50-default.conf 文件;源文件中message被注释,如下图: 2、打开注释: 3、重启服务 systemctl restart rsyslog.service 如此即可!

OFDM802.11a的FPGA实现(五)卷积编码器的FPGA实现与验证(含verilog代码和matlab代码)

目录 1.前言2.卷积编码2.1卷积编码基本概念2.2 802.11a卷积编码器2.3 卷积编码模块设计2.4 Matlab设计与ModelSim仿真验证 1.前言 前面一节完成了扰码器的FPGA设计与Matlab验证,这节继续对卷积编码器进行实现和验证。 2.卷积编码 2.1卷积编码基本概念 卷积码编码器…

Aiseesoft Data Recovery for Mac:专业数据恢复软件

Aiseesoft Data Recovery for Mac是一款高效且专业的数据恢复软件,专为Mac用户量身打造。 Aiseesoft Data Recovery for Mac v1.8.22激活版下载 无论是由于误删、格式化还是系统崩溃等原因导致的数据丢失,Aiseesoft都能帮助您快速找回。 它采用先进的扫描…

Windows下Git安装

目录 一、下载二、安装三、查看 Git 安装路径 一、下载 下载链接:https://git-scm.com/ 二、安装 双击安装包,按提示一步步进行操作: 三、查看 Git 安装路径 where git D:\Program Files\Git\cmd\git.exe

什么是DDoS攻击?怎么防御DDoS攻击?

在网络安全领域,DDoS攻击一直是热门话题,随着网络技术的不断发展和网络环境的复杂化演变,DDoS攻击变得愈加频繁、更具破坏性。根据2023年网络安全态势研判分析年度综合报告,全年全网网络层的DDoS攻击次数达2.51亿次!本…

卷积通用模型的剪枝、蒸馏---蒸馏篇--KD蒸馏(以deeplabv3+为例)

上篇文章介绍了剪枝篇,本文以上篇的剪枝模型为学生模型,以剪枝之前的模型为教师模型,进行KD逻辑蒸馏,之后会尝试特征蒸馏和关系蒸馏等。 一、KD逻辑蒸馏 1.1 大致过程 逻辑蒸馏,是基于分类问题设计的,因此非常适用于语义分割。模型最后会有一个softmax层,其输出值对应了…

React正式更新!开始学习React 19!

本文为原创文章,原文链接:J实验室,未经授权请勿转载 今年2月份,React 发布消息确认今年发布 v19 版本,尘封两年的版本号终于要更新了(详情点击:React 19 发布在即,抢先学习一下新特性…

x2600君正 ubi文件系统的编译和烧录

使用平台:君正x2600 ubi文件系统使用问题 1.ubi文件和ubifs文件 2 方法:mkfs.ubifs和ubinize两步打包ubi文件系统 mkfs.ubifs工具 mkfs.ubifs命令用于制作ubifs文件系统,命令示例如下: mkfs.ubifs -x lzo -m 2KiB -e 124KiB -c 3…

FSNotes for Mac v6.7.1中文激活版:强大的笔记管理工具

FSNotes for Mac是一款功能强大的文本处理与笔记管理工具,为Mac用户提供了一个直观、高效的笔记记录和整理平台。 FSNotes for Mac v6.7.1中文激活版下载 FSNotes支持Markdown语法,使用户能够轻松设置笔记格式并添加链接、图像等元素,实现笔记…

【软考高项】第十二章 项目质量管理

目录 12.1管理基础 12.1.1质量与项目质量 12.1.2质量管理 12.1.3质量管理标准体系 12.1.4管理新实践 12.2项目质量管理过程 12.2.1过程概述 12.2.2裁剪考虑因素 12.2.3敏捷与适应方法 12.3规划质量管理 12.3.1输入 12.3.2工具与技术 12.3.3输出 12.4管理质量 12…

最小K个数(力扣面试题17.14)

本文采用的是大堆排序求最小的K个值。需要有堆的数据结构基础哦。 代码展示: /*** Note: The returned array must be malloced, assume caller calls free().*/ void AdjustDown(int* parr,int n,int root)//向下调整 {int parentroot;int child parent*21;while…

opencv_23_高斯模糊

void ColorInvert::gaussian_blur(Mat& image) { Mat dst; GaussianBlur(image, dst, Size(0, 0), 15); // Size(2, 2), imshow("图像模糊2", dst); }

代码随想录算法训练营DAY42|C++动态规划Part4|0-1背包理论基础(一)、0-1背包理论基础之滚动数组(二)、416.分割等和子集

文章目录 0-1背包理论基础(一)前置知识01背包动态规划:01背包二维dp数组 CPP代码再论01背包的遍历顺序 0-1背包理论基础(二)一维dp数组如何初始化一维dp数组遍历顺序举例推导dp数组CPP代码 416.分割等和子集思路将题目抽象成0-1背包问题 CPP代码 0-1背包理论基础(一…

2013NOIP普及组真题 4. 车站分级

线上OJ: 一本通:http://ybt.ssoier.cn:8088/problem_show.php?pid1964 核心思想: 1、原文中提到 “如果这趟车次停靠了火车站 x,则始发站、终点站之间所有级别大于等于火车站 x 的都必须停靠”,如果设停靠站为A&…