烤地瓜
需求
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平方米,家具有['双人床', '沙发']