三道关于python面向对象的练习题

这篇具有很好参考价值的文章主要介绍了三道关于python面向对象的练习题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.题目

小明和小美都爱跑步
小明体重 75 公斤
小美体重 45 公斤
每次跑步会减肥 0.5 公斤
每次吃东西体重增加 1 公斤

需求分析

小明、小美都是一个具体的对象,他们都是人,所以应该抽象成人类
小明、小美是具体的对象的姓名,而体重是另一个属性,所以有两个属性
跑步、吃东西都是一种行为,所以也有两个方法

类图

三道关于python面向对象的练习题

实现代码

class Person:
    # 构造方法
    def __init__(self, name, weight):
        # 两个实例属性
        self.name = name
        self.weight = weight

    # 打印实例对象会返回的内容
    def __str__(self):
        return f"名字:{self.name} 体重:{self.weight} 很爱跑步"

    # 跑步实例方法
    def run(self):
        print(f"{self.name} 在跑步,体重减少0.5公斤")
        self.weight -= 0.5

    # 吃饭实例方法
    def eat(self):
        print(f"{self.name} 在吃饭,体重增加1公斤")
        self.weight += 1

# 实例对象一:小明
xiaoming = Person("小明", 75)
print(xiaoming)
xiaoming.eat()
xiaoming.run()
print(xiaoming)

# 实例对象二:小美
xiaomei = Person("小美", 45)
print(xiaomei)
xiaomei.eat()
xiaomei.run()
print(xiaomei)



# 输出结果
名字:小明 体重:75 很爱跑步
小明 在吃饭,体重增加1公斤
小明 在跑步,体重减少0.5公斤
名字:小明 体重:75.5 很爱跑步

名字:小美 体重:45 很爱跑步
小美 在吃饭,体重增加1公斤
小美 在跑步,体重减少0.5公斤
名字:小美 体重:45.5 很爱跑步

2.题目

设计一个类Person,生成若干实例,在终端输出如下信息

小明,10岁,男,上山去砍柴

小明,10岁,男,开车去东北

小明,10岁,男,最爱大保健

老李,90岁,男,上山去砍柴

老李,90岁,男,开车去东北

老李,90岁,男,最爱大保健

实际代码

并不代表最优代码,大家有更好的写法可以评论下

class person:
    # 构造方法,为实例对象初始化属性
    def __init__(self, name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex
    
    # 获取对象属性的方法
    def GetSelfMessage(self):
        return self.name, self.age, self.sex
    
    # 实例方法,用于实例对象执行某种行为
    def DoSomething(self, doing):
        print(*self.GetSelfMessage(), doing)

# 实例对象一
xiaoming = person("小明", 10, "男")
xiaoming.DoSomething("上山砍柴")
xiaoming.DoSomething("开车去东北")
xiaoming.DoSomething("大保健")

# 实例对象二
laoli = person("老李", 90, "男")
laoli.DoSomething("上山砍柴")
laoli.DoSomething("开车去东北")
laoli.DoSomething("大保健")


# 输出结果
小明 10 男 上山砍柴
小明 10 男 开车去东北
小明 10 男 大保健
老李 90 男 上山砍柴
老李 90 男 开车去东北
老李 90 男 大保健

3.题目

房子(House)有户型、总面积、家具名称列表;新房子没有任何的家具 
家具(HouseItem)有名字、占地面积
席梦思(bed) 占地 4 平米
衣柜(bed) 占地 2 平米
餐桌(bed) 占地 1.5 平米
将以上三个家具添加到房子中
打印房子时,要求输出:户型、总面积、剩余面积、家具名称列表

需求分析

家具有两个属性,房子表面上有三个属性
新房子没有任何的家具,代表构造方法不需要给家具名称列表属性初始化赋值
但房子其实还有一个特殊属性,剩余面积,它的初始值应该和总面积相同
房子添加家具后,剩余面积应该减掉家具的占地面积
席梦思、衣柜、餐桌都是一个具体的对象,都是家具类的实例对象

思考:房子、家具两个类应该先开发哪个类

家具类
因为家具类简单,只有两个方法,且没有行为
房子要使用到家具,被依赖的类,通常应该先开发,可以避免在开发主类过程中,要中途插入开发被依赖的类

类图

三道关于python面向对象的练习题

实现代码

家具类

class HouseItem:
    # 构造方法
    def __init__(self, name, area):
        self.name = name
        self.area = area

    def __str__(self):
        return f"家具名称:{self.name} 占地面积:{self.area}" 

房子类

class House:
    # 构造方法
    def __init__(self, type, area):
        self.house_type = type
        self.area = area
        # 剩余面积
        self.free_area = self.area
        # 家具名称列表
        self.item_list = []

    # str
    def __str__(self):
        return f"户型:{self.house_type}\n" \
               f"总面积:{self.area}\n" \
               f"剩余面积:{self.free_area}\n" \
               f"家具:{self.item_list}\n"
	# Python小白学习交流群:153708845
    # 添加家具
    def add_item(self, item):
        # 1、家具占地面积>剩余面积
        if item.area > self.free_area:
            print("剩余面积不足以添加 ", item.name)
            return
        # 2、添加家具名称
        self.item_list.append(item.name)
        # 3、计算剩余面积
        self.free_area -= item.area

执行代码文章来源地址https://www.toymoban.com/news/detail-711435.html

# 创建三个家具
bed = HouseItem("席梦思", 4)
chest = HouseItem("衣柜", 2)
table = HouseItem("餐桌", 1.5)

# 创建房子实例对象
poloHouse = House("120平复试", 120)
# 添加家具
poloHouse.add_item(bed)
poloHouse.add_item(chest)
poloHouse.add_item(table)
# 打印房子信息
print(poloHouse)


# 输出结果
户型:120平复试
总面积:120
剩余面积:112.5
家具:['席梦思', '衣柜', '餐桌']

到了这里,关于三道关于python面向对象的练习题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL:关于数据库的一些练习题

    前面的内容已经把数据库的一些必要知识已经储备好了,因此下面就对于这些语句进行一些练习: 批量插入数据 SQL202 找出所有员工当前薪水salary情况 SQL195 查找最晚入职员工的所有信息 SQL196 查找入职员工时间排名倒数第三的员工所有信息 SQL201 查找薪水记录超过15条的员工

    2024年04月17日
    浏览(38)
  • 【C++】初始化列表、static成员、友元、匿名对象、附练习题

    我们前面学习了关于类和对象的6个默认成员函数,知道了一个空类中有构造函数和析构函数,通过对对象初始化和对象中进行资源清理,达到初始化和销毁的作用。我们再对一些小的点进行补充,看看类和对象的一些细节。 1.1 构造函数体赋值 在创建对象时,编译器通过 调

    2024年02月22日
    浏览(53)
  • 计算机安全学习笔记(VI):9道关于网络安全的练习题

    a. 总长度 b. 目的端口 c. 校验和 d. 源端口 正确答案是: c. 校验和(Checksum) 在UDP(用户数据报协议)中,校验和(Checksum)字段用于检测数据报文的完整性。当发送端创建UDP数据报文时,它会计算数据报文的校验和,并将其放置在UDP头部的校验和字段中。接收端在收到数据报文

    2024年01月22日
    浏览(53)
  • python 基础练习题

    目录 1、定义两个变量,交换两个变量【使用多种方式】 2、给定成绩,判断用户成绩的档次 3. 作业:下列哪一项是“4是奇数或-9为正数”的否定( ) 4. 作业:判断一个整数是奇数还是偶数 5. 求矩形的面积和周长 6. 根据天数(从控制台上输入)计算这一年中的周数和剩余的

    2024年04月12日
    浏览(43)
  • python文件练习题

    【问题描述】 从一个文本文件内读入任意多个学生的分数,求出最高分,最低分和平均分存入文件result.txt内。 【输入形式】 一个文件,文件中分数之间由换行隔开,输入的文件名为grade.txt。输入的分数都是整数。 【输出形式】 计算出grade.txt中所有分数的最高分,最低分和

    2024年02月03日
    浏览(47)
  • 【Python】基础练习题

    1)从random库中选取相应的函数,用蒙特卡罗方法(统计实验方法)求解pi。 2)一个笼中共有鸡和兔15只,它们的脚一共有40只,问有多少只鸡?有多少只兔? 3) “猴子吃桃”问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下

    2024年02月07日
    浏览(45)
  • Python练习题

    【程序 1】 题目:有 1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 使用 permutations函数 【程序 3】 题目:一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少? 【程序 4】 题目:输入某年某月某日,判

    2024年02月08日
    浏览(40)
  • 【练习题】python列表

    1. 基础题 已知一个数字列表,打印列表中所有的奇数 已知一个数字列表,打印列表中所有能被能被3整除但是不能被2整除的数 已知一个数字列表,计算所有偶数的和 已知一个数字列表,统计列表中十位数是 1 的数的个数 已知一个列表,获取列表中下标为奇数是所有元素(从

    2024年02月05日
    浏览(46)
  • c++ 对类与对象的基础框架+完整思维导图+基本练习题+深入细节+通俗易懂建议收藏

    上一章,我们将c++入门的基础知识进行了学习,本章其实才算真正的跨入到c++开始可能比较难,但只有我们唯有不断的前进,才能斩断荆棘越过人生的坎坷!            话不多说安全带系好,发车啦 (建议电脑观看) 。     附:红色,部分为重点部分;蓝颜色为需要记

    2024年02月01日
    浏览(38)
  • python基础操作练习题

    使用版本:python 3.6.8 IDE:pycharm 这些练习题是在神经网络与深度学习课程上老师提供的,原因是有些同学没学过python,作为简单的练手习题。 题目都很简单,加上python本身也比较简单,有些题目的作答可以一行代码实现(虽然可读性就下降了)。 2.1 数位之和 编写程序,输入

    2024年02月08日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包