You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python变量名嵌套问题:鸡尾酒调配器项目扩展困境

解决鸡尾酒调配器的扩展问题:告别重复函数,用结构化方式管理配方

嘿,作为刚入门Python的新手,能动手做硬件项目已经超棒了!你遇到的这个重复函数、变量嵌套难扩展的问题,其实是很多新手都会踩的坑——硬编码逻辑会把自己困死在“加功能就加函数”的循环里。下面给你几个实用的方案,帮你把项目改成可扩展的结构:

第一步:用字典存储所有鸡尾酒配方

先把你每个鸡尾酒里的泵量参数抽出来,用字典统一管理,这样新增鸡尾酒只需要加一条字典记录,不用写新函数:

# 定义所有鸡尾酒的配方:键是鸡尾酒名称,值是泵编号和对应量的映射
cocktail_recipes = {
    "Mojito": {"pump1": 100 * C, "pump3": 75 * C},  # 假设C是浓度系数
    "Old Fashioned": {"pump2": 150 * C, "pump4": 50 * C},
    # 新增鸡尾酒直接在这里加就行!
    "Margarita": {"pump1": 80 * C, "pump5": 120 * C}
}

然后写一个通用的调配函数,根据传入的鸡尾酒名称去调用对应的泵:

def make_cocktail(cocktail_name):
    if cocktail_name not in cocktail_recipes:
        print(f"抱歉,没有{cocktail_name}的配方!")
        return
    
    recipe = cocktail_recipes[cocktail_name]
    for pump_num, amount in recipe.items():
        # 这里替换成你实际控制泵的代码,比如调用泵的驱动函数
        print(f"启动{pump_num},输出量:{amount}")
        # 示例:如果你的泵控制函数是run_pump(pump_id, amount),就写 run_pump(pump_num, amount)

调用的时候就简单了:

make_cocktail("Mojito")
make_cocktail("Margarita")

第二步:用类封装更专业的逻辑(进阶版)

如果你的项目后续要加更多功能(比如泵状态监控、配方编辑、浓度调整),用类来封装会更清晰:

class CocktailMaker:
    def __init__(self, concentration_coefficient=1.0):
        self.C = concentration_coefficient  # 浓度系数,可动态调整
        self.recipes = {
            "Mojito": {"pump1": 100, "pump3": 75},
            "Old Fashioned": {"pump2": 150, "pump4": 50},
        }
    
    def add_recipe(self, cocktail_name, pump_amounts):
        """新增鸡尾酒配方"""
        self.recipes[cocktail_name] = pump_amounts
    
    def run_pump(self, pump_num, amount):
        """实际控制泵的方法,这里替换成你的硬件驱动代码"""
        print(f"控制{pump_num}泵,输出{amount * self.C}单位液体")
    
    def make_cocktail(self, cocktail_name):
        """根据名称调配鸡尾酒"""
        if cocktail_name not in self.recipes:
            print(f"配方不存在:{cocktail_name}")
            return
        
        for pump, base_amount in self.recipes[cocktail_name].items():
            self.run_pump(pump, base_amount)

使用示例:

# 创建调配器实例,设置浓度系数
maker = CocktailMaker(concentration_coefficient=0.8)
# 新增配方
maker.add_recipe("Margarita", {"pump1": 80, "pump5": 120})
# 调一杯莫吉托
maker.make_cocktail("Mojito")

为什么这样做?

  • 彻底解决扩展问题:新增鸡尾酒只需要加配方,不用写重复的CocktailX()函数
  • 变量管理更清晰:所有泵量和浓度参数都集中管理,不会出现变量嵌套混乱的情况
  • 代码更易维护:如果后续要修改泵的控制逻辑,只需要改run_pump一个方法,不用挨个改所有鸡尾酒函数

这样调整后,你的项目就能轻松支持几十上百种鸡尾酒配方,也方便后续加新的硬件功能~

内容的提问来源于stack exchange,提问作者AskerBuoi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:17:46