Python随机食谱生成器开发:如何复用随机食材到对应烹饪步骤
Python随机食谱生成器修复方案
问题根源
原有代码没有存储生成的食材清单内容,生成步骤时使用的是提前仅随机1次的固定食材变量,和清单内食材完全不匹配。
修复后完整代码
import random # 素材库:内置26种食材、10种烹饪操作 amounts = ["50g", "70g", "90g", "143g", "150g", "180g", "200g", "235g", "300g", "320g", "350g", "386g", "400g", "433g", "462g"] ingredients = ["鸡蛋", "白糖", "盐", "黄油", "牛奶", "培根", "番茄", "意面", "大米", "土豆", "洋葱", "胡萝卜", "中筋面粉", "面条", "芝士", "鸡肉", "牛肉", "菠菜", "草莓", "苹果", "蓝莓", "橄榄油", "生抽", "玉米", "虾", "蛋黄酱"] cooking_phrases = ["取一个中等大小的碗,混合搅拌", "取一口大锅开中火,翻炒", "取煎锅,煎香", "取一口汤锅,煮沸", "充分清洗", "切成薄片", "切成1英寸见方的小丁", "设置微波炉定时1分钟,加热", "用料理机充分搅打", "放入350°F(约175℃)烤箱烘烤20分钟,烤制"] def generate_single_ingredient(): """生成单条带用量的食材,同时返回纯食材名用于后续步骤拼接""" selected_quantity = random.choice(amounts) selected_ing = random.choice(ingredients) # 移除已选食材,避免同一食谱出现重复食材 ingredients.remove(selected_ing) return f"{selected_quantity} {selected_ing}", selected_ing def generate_single_step(cooking_phrase, ing_name): """拼接烹饪操作和对应食材,生成单条制作步骤""" return f"{cooking_phrase} {ing_name}。" if __name__ == "__main__": # 存储本次生成的所有食材,保证清单和步骤食材完全一致 full_ing_list = [] pure_ing_name_list = [] # 生成5种不重复食材 for _ in range(5): full_ing, pure_ing = generate_single_ingredient() full_ing_list.append(full_ing) pure_ing_name_list.append(pure_ing) # 输出食材清单 print("=== 食材清单 ===") for ing in full_ing_list: print(f"- {ing}") # 输出制作流程 print("\n=== 制作流程 ===") # 随机取5种不重复的烹饪操作 selected_phrases = random.sample(cooking_phrases, 5) for idx in range(5): step_content = generate_single_step(selected_phrases[idx], pure_ing_name_list[idx]) print(f"{idx+1}. {step_content}")
主要修改点
- 新增食材存储逻辑:生成食材时同时保存带用量的完整内容和纯食材名,保证步骤调用的食材和清单100%一致
- 优化函数设计:两个自定义函数职责明确,去除原有代码中无意义的入参
- 增加去重逻辑:同一食谱内不会出现重复的食材和重复的烹饪操作
- 适配中文使用习惯:所有食材、烹饪短语都翻译为中文,输出格式清晰易读
- 完全符合设计规范:内置26种食材、10种烹饪操作,用量统一以g为单位,函数结构清晰
内容的提问来源于stack exchange,提问作者Anna Li
相关产品推荐
相关产品推荐

