侧边栏壁纸
  • 累计撰写 119 篇文章
  • 累计创建 25 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

面向对象综合应用

梁来福
2022-02-24 / 0 评论 / 0 点赞 / 0 阅读 / 4743 字
温馨提示:
本文最后更新于 2024-05-06,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

烤地瓜

需求

1、烤的时间和对应的地瓜状态

0-3分钟:生的

3-5分钟:半生不熟

5-8分钟:熟了

超过8分钟:烤糊了

2、添加的调料

用户可以按自己的意愿添加调料

步骤分析

需求涉及一个事物:地瓜,故案例涉及一个类:地瓜类

定义类

地瓜的属性

定义地瓜初始化属性,后期根据程序推进更新实例属性

  • 被烤的时间
  • 地瓜的状态
  • 添加的调料

地瓜的方法

被烤
  • 用户根据意愿设定每次烤地瓜的时间
  • 判断地瓜被烤的总时间是在哪个区间,修改地瓜状态
添加调料
  • 用户根据意愿设定添加的调料
  • 将用户添加的调料存储

显示对象信息

书写str魔法方法,用于输出对象状态

代码实现

class SweetPotato():
    def __init__(self):
        # 被烤的时间
        self.cook_time = 0
        # 烤的状态
        self.cook_state = "生的"
        # 调料列表
        self.condiments = []

    def cook(self, time):
        """烤地瓜方法"""
        # 1、先计算地瓜整体烤过的时间
        self.cook_time += time
        # 2、用整体烤过的时间再判断地瓜的状态
        if 0 <= self.cook_time <3:
            self.cook_state = "生的"
        elif 3 <= self.cook_time < 5:
            self.cook_state = "半生不熟"
        elif 5 <= self.cook_time < 8:
            self.cook_state = "熟了"
        elif self.cook_time >= 8:
            self.cook_state = "烤糊了"

    def __str__(self):
        return f"这个地瓜已经烤了{self.cook_time}分钟,状态是{self.cook_state}"


# 创建对象并调用对应的实例方法
digua = SweetPotato()
print(digua)

digua.cook(2)
print(digua)

digua.cook(2)
print(digua)

digua.cook(1)
print(digua)

digua.cook(4)
print(digua)

输出

这个地瓜已经烤了0分钟,状态是生的
这个地瓜已经烤了2分钟,状态是生的
这个地瓜已经烤了4分钟,状态是半生不熟
这个地瓜已经烤了5分钟,状态是熟了
这个地瓜已经烤了9分钟,状态是烤糊了

总代码实现

class SweetPotato():
    def __init__(self):
        # 被烤的时间
        self.cook_time = 0
        # 烤的状态
        self.cook_state = "生的"
        # 调料列表
        self.condiments = []

    def cook(self, time):
        """烤地瓜方法"""
        # 1、先计算地瓜整体烤过的时间
        self.cook_time += time
        # 2、用整体烤过的时间再判断地瓜的状态
        if 0 <= self.cook_time <3:
            self.cook_state = "生的"
        elif 3 <= self.cook_time < 5:
            self.cook_state = "半生不熟"
        elif 5 <= self.cook_time < 8:
            self.cook_state = "熟了"
        elif self.cook_time >= 8:
            self.cook_state = "烤糊了"

    def add_condiments(self, condiment):
        # 将用户意愿的调料追加到调料列表
        self.condiments.append(condiment)

    def __str__(self):
        return f"这个地瓜已经烤了{self.cook_time}分钟,状态是{self.cook_state},添加的调料有{self.condiments}"


# 创建对象并调用对应的实例方法
digua = SweetPotato()
print(digua)

digua.cook(2)
print(digua)

digua.cook(2)
digua.add_condiments("辣椒面儿")
print(digua)

digua.cook(1)
print(digua)

digua.cook(4)
digua.add_condiments("十三香")
print(digua)

输出

这个地瓜已经烤了0分钟,状态是生的,添加的调料有[]
这个地瓜已经烤了2分钟,状态是生的,添加的调料有[]
这个地瓜已经烤了4分钟,状态是半生不熟,添加的调料有['辣椒面儿']
这个地瓜已经烤了5分钟,状态是熟了,添加的调料有['辣椒面儿']
这个地瓜已经烤了9分钟,状态是烤糊了,添加的调料有['辣椒面儿', '十三香']


搬家具

需求

将小于房子剩余面积的家具摆放到房子中

定义类

房子类

实例属性

  • 房子地理位置
  • 房子占地面积
  • 房子剩余面积
  • 房子内家具列表

实例方法

  • 容纳家具

显示房屋信息

家具类

  • 家具名称
  • 家具占地面积

代码实现

# 定义家具类
class Furniture():
    def __init__(self, name, area):
        # 家具名称
        self.name = name
        # 家具占地面积
        self.area = area

# 定义房子类
class Home():
    def __init__(self, address, area):
        # 地理位置
        self.address = address
        # 房屋面积
        self.area = area
        # 剩余面积
        self.free_area = area
        # 家具列表
        self.furniture = []

    def __str__(self):
        return f"房子坐落于{self.address},房屋面积是{self.area}平方米,剩余面积{self.free_area}平方米,家具有{self.furniture}"

    def add_furniture(self, item):
        """容纳家具"""
        # 如果家具占地面积<=房子剩余面积,可以搬入家具,家具列表添加家具名字且房子剩余面积更新
        if item.area <= self.free_area:
            self.furniture.append(item.name)
            self.free_area -= item.area
        else:
            print("家具太大,无法容纳")


# 房子1:北京 1000平
jia1 = Home("北京", 1000)
print(jia1)

# 家具
# 床 6平方米
bed = Furniture("双人床", 6)
# 沙发 10平方米
sofa = Furniture("沙发", 10)
# 游泳场 1500平方米
swim = Furniture("游泳场", 1500)

jia1.add_furniture(bed)
print(jia1)

jia1.add_furniture(sofa)
print(jia1)

jia1.add_furniture(swim)
print(jia1)

输出

房子坐落于北京,房屋面积是1000平方米,剩余面积1000平方米,家具有[]
房子坐落于北京,房屋面积是1000平方米,剩余面积994平方米,家具有['双人床']
房子坐落于北京,房屋面积是1000平方米,剩余面积984平方米,家具有['双人床', '沙发']
家具太大,无法容纳
房子坐落于北京,房屋面积是1000平方米,剩余面积984平方米,家具有['双人床', '沙发']

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin
博主关闭了所有页面的评论