项目33:简易食谱生成器 — 《跟着小王学Python·新手》
《跟着小王学Python》 是一套精心设计的Python学习教程,适合各个层次的学习者。本教程从基础语法入手,逐步深入到高级应用,以实例驱动的方式,帮助学习者逐步掌握Python的核心概念。通过开发游戏、构建Web应用、编写网络爬虫、制作桌面软件等多样化项目,学习者可以深入理解并实践Python知识。每周更新1至2篇内容,旨在助力学习者成长为全栈工程师。
作为课程作业或者毕设参考也是不错的选择
文章目录
- 项目33:简易食谱生成器 --- 《跟着小王学Python·新手》
- 目标
- 功能
- 设计
- 数据结构设计
- 程序流程设计
- 用户界面设计
- 实现步骤
- 代码实现
- 测试
- 注意事项
- 小结

目标
本项目旨在为Python新手提供一个简易食谱生成器的开发教程。通过本项目,新手可以学习到如何设计和实现一个简单的应用程序,同时了解一些基本的编程概念和技巧。

功能
简易食谱生成器的主要功能包括:
- 用户输入食材,程序根据食材推荐相应的食谱。
- 显示食谱的名称、所需食材和烹饪步骤。
- 允许用户保存生成的食谱。
设计
数据结构设计
我们将使用字典来存储食谱信息,其中键为食谱名称,值为另一个字典,包含所需食材和烹饪步骤。
程序流程设计
- 初始化食谱数据库。
- 提示用户输入食材。
- 根据输入的食材,从食谱数据库中匹配食谱。
- 显示匹配到的食谱。
- 提供保存食谱的选项。
用户界面设计
我们将使用命令行界面与用户交互,使用简单的文本提示和输入来实现用户界面。
实现步骤
- 创建食谱数据库。
- 实现食谱匹配逻辑。
- 实现用户输入和输出功能。
- 实现食谱保存功能。
代码实现
# 简易食谱生成器
# 食谱数据库
recipes = {
"番茄炒蛋": {
"食材": ["番茄", "鸡蛋", "盐", "糖"],
"步骤": [
"番茄切块,鸡蛋打散。",
"锅中加油,倒入鸡蛋液,翻炒至熟。",
"加入番茄块,加盐和糖,翻炒均匀。"
]
},
"青椒肉丝": {
"食材": ["青椒", "猪肉", "生抽", "料酒"],
"步骤": [
"青椒切丝,猪肉切丝。",
"锅中加油,先炒肉丝,加生抽和料酒调味。",
"加入青椒丝,快速翻炒至熟。"
]
}
}
# 用户输入食材
def get_ingredients():
return input("请输入您拥有的食材,用逗号分隔:").split(",")
# 匹配食谱
def match_recipe(ingredients):
matched_recipes = []
for recipe_name, recipe_info in recipes.items():
if all(ingredient in recipe_info["食材"] for ingredient in ingredients):
matched_recipes.append(recipe_name)
return matched_recipes
# 显示食谱
def display_recipes(matched_recipes):
if not matched_recipes:
print("没有找到匹配的食谱。")
else:
for recipe_name in matched_recipes:
print(f"食谱名称:{recipe_name}")
print("所需食材:", recipes[recipe_name]["食材"])
print("烹饪步骤:")
for step in recipes[recipe_name]["步骤"]:
print("-", step)
print()
# 主函数
def main():
ingredients = get_ingredients()
matched_recipes = match_recipe(ingredients)
display_recipes(matched_recipes)
if __name__ == "__main__":
main()测试
- 测试输入单一食材是否能正确匹配食谱。
- 测试输入多个食材是否能正确匹配食谱。
- 测试输入不存在的食材是否能给出正确提示。
注意事项
- 确保输入的食材名称与食谱数据库中的名称一致。
- 程序目前不支持食材的同义词识别,需要用户输入准确的食材名称。
- 食谱数据库可以根据需要进行扩展。
小结
通过本项目,我们学习了如何设计和实现一个简易的食谱生成器。我们了解了基本的数据结构设计、程序流程设计以及用户界面设计。同时,我们也实践了Python编程的基本技巧,包括字典的使用、函数的定义和调用等。希望这个项目能够帮助新手更好地理解Python编程的基本概念。
















