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
相关产品推荐
相关产品推荐

