一个与粽子相关的python题目

一个与粽子相关的python题目

粽子制作器(ZongziMaker)

ZongziMaker 是一个粽子制作器类,它可以制作、煮和描述粽子。

属性

  • zongzi_list:存储所有制作的粽子的列表。

方法

make_zongzi(flavor, ingredients, wrapping_leaf, cooking_time)

制作一个新的粽子并加入到粽子列表中。

  • 参数:
    • flavor:str,粽子口味。
    • ingredients:list,粽子的配料列表。
    • wrapping_leaf:str,用于包裹粽子的叶子。
    • cooking_time:float,粽子需要的烹饪时间。

cook_all_zongzi()

煮所有的粽子,将它们标记为已煮熟状态。

describe_all_zongzi()

描述所有的粽子,打印粽子的口味、配料、包裹叶子和煮熟状态等信息。

find_by_ingredient(ingredient)

根据配料查找粽子,返回含有指定配料的粽子列表。

  • 参数:
    • ingredient:str,要查找的粽子配料。

find_by_wrapping_leaf(wrapping_leaf)

根据包裹叶子查找粽子,返回使用指定包裹叶子的粽子列表。

  • 参数:
    • wrapping_leaf:str,要查找的包裹叶子。

粽子(Zongzi)

Zongzi 类表示一个粽子对象,并具有口味、配料、包裹叶子、烹饪时间和是否煮熟等属性。

属性

  • flavor:str,粽子口味。
  • ingredients:list,粽子的配料列表。
  • wrapping_leaf:str,用于包裹粽子的叶子。
  • cooking_time:float,粽子需要的烹饪时间。
  • cooked:bool,表示粽子是否已煮熟。

方法

cook()

标记粽子为已煮熟状态,设置 cooked 属性为 True

describe()

描述粽子的口味、配料、包裹叶子和煮熟状态等信息。

完整代码

class Zongzi:
    def __init__(self, flavor, ingredients, wrapping_leaf, cooking_time):
        self.flavor = flavor
        self.ingredients = ingredients
        self.wrapping_leaf = wrapping_leaf
        self.cooking_time = cooking_time
        self.cooked = False
 
    def cook(self):
        self.cooked = True
    
    def describe(self):
        print("这是一个{}口味的粽子。它的配料有: {}。".format(self.flavor, ", ".join(self.ingredients)))
        print("包裹叶子: {}".format(self.wrapping_leaf))
        if self.cooked:
            print("粽子已经煮熟了!")
        else:
            print("粽子还没有煮熟。")

 
class ZongziMaker:
    def __init__(self):
        self.zongzi_list = []
 
    def make_zongzi(self, flavor, ingredients, wrapping_leaf, cooking_time):
        zongzi = Zongzi(flavor, ingredients, wrapping_leaf, cooking_time)
        self.zongzi_list.append(zongzi)
 
    def cook_all_zongzi(self):
        for zongzi in self.zongzi_list:
            zongzi.cook()
 
    def describe_all_zongzi(self):
        for index, zongzi in enumerate(self.zongzi_list, start=1):
            print("第{}个粽子:".format(index))
            zongzi.describe()

    def find_by_ingredient(self, ingredient):
        found_zongzi = []
        for zongzi in self.zongzi_list:
            if ingredient in zongzi.ingredients:
                found_zongzi.append(zongzi)
        return found_zongzi

    def find_by_wrapping_leaf(self, wrapping_leaf):
        found_zongzi = []
        for zongzi in self.zongzi_list:
            if wrapping_leaf == zongzi.wrapping_leaf:
                found_zongzi.append(zongzi)
        return found_zongzi


def main():
    maker = ZongziMaker()
 
    # 制作四个粽子
    maker.make_zongzi("咸肉粽", ["糯米", "咸肉", "藕片"], "竹叶", 2.5)
    maker.make_zongzi("甜粽子", ["糯米", "红枣", "豆沙"], "荷叶", 1.5)
    maker.make_zongzi("绿豆粽", ["糯米", "绿豆", "莲蓉"], "玉米叶", 3.0)
    maker.make_zongzi("蛋黄肉粽", ["糯米", "咸蛋黄", "五花肉"], "竹叶", 2.5)
 
    # 煮所有的粽子
    maker.cook_all_zongzi()
 
    # 描述所有的粽子
    maker.describe_all_zongzi()

    # 按配料查找粽子
    print("\n根据配料查找粽子:")
    found_by_ingredient = maker.find_by_ingredient("咸肉")
    if found_by_ingredient:
        print("找到了以下含有咸肉的粽子:")
        for zongzi in found_by_ingredient:
            zongzi.describe()
    else:
        print("没有找到含有咸肉的粽子。")

    # 按包裹叶子查找粽子
    print("\n根据包裹叶子查找粽子:")
    found_by_wrapping_leaf = maker.find_by_wrapping_leaf("竹叶")
    if found_by_wrapping_leaf:
        print("找到了以下使用竹叶包裹的粽子:")
        for zongzi in found_by_wrapping_leaf:
            zongzi.describe()
    else:
        print("没有找到使用竹叶包裹的粽子。")

 
if __name__ == "__main__":
    main()


运行结果:

第1个粽子:
这是一个咸肉粽口味的粽子。它的配料有: 糯米, 咸肉, 藕片。
包裹叶子: 竹叶
粽子已经煮熟了!
第2个粽子:
这是一个甜粽子口味的粽子。它的配料有: 糯米, 红枣, 豆沙。
包裹叶子: 荷叶
粽子已经煮熟了!
第3个粽子:
这是一个绿豆粽口味的粽子。它的配料有: 糯米, 绿豆, 莲蓉。
包裹叶子: 玉米叶
粽子已经煮熟了!
第4个粽子:
这是一个蛋黄肉粽口味的粽子。它的配料有: 糯米, 咸蛋黄, 五花肉。
包裹叶子: 竹叶
粽子已经煮熟了!

根据配料查找粽子:
找到了以下含有咸肉的粽子:
这是一个咸肉粽口味的粽子。它的配料有: 糯米, 咸肉, 藕片。
包裹叶子: 竹叶
粽子已经煮熟了!
这是一个蛋黄肉粽口味的粽子。它的配料有: 糯米, 咸蛋黄, 五花肉。
包裹叶子: 竹叶
粽子已经煮熟了!

根据包裹叶子查找粽子:
找到了以下使用竹叶包裹的粽子:
这是一个咸肉粽口味的粽子。它的配料有: 糯米, 咸肉, 藕片。
包裹叶子: 竹叶
粽子已经煮熟了!
这是一个蛋黄肉粽口味的粽子。它的配料有: 糯米, 咸蛋黄, 五花肉。
包裹叶子: 竹叶
粽子已经煮熟了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客李华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值