用 Python 打造一个菜单管理程序:学会列表、字典、函数与文件操作
大家好,今天我们将通过一个完整的菜单管理程序,来学习 Python 中四个非常重要的概念:列表(list)、字典(dict)、函数(function) 和文件操作(file I/O)。无论你是刚入门的小白,还是想巩固基础的同学,这篇文章都能帮你理清思路,写出更优雅、更健壮的代码。
一、程序功能预览
我们先来看最终要实现的程序:
-
可以查看当前菜单(显示菜名和价格)
-
可以添加新菜品
-
可以删除菜品
-
可以修改菜品名称或价格
-
所有数据自动保存到文件中,下次启动时自动加载
运行界面如下:
这看起来像个简单的点餐系统后台,但它背后用到了 Python 的核心数据结构。让我们一步步拆解。
二、列表:存储多个菜品
在程序中,我们需要保存多道菜,每道菜都有名字和价格。Python 的列表正好用来存放一系列数据。
这里 DEFAULT_MENU 就是一个列表,用方括号 [] 括起来。列表可以包含任意类型的元素,这里每个元素都是一个字典(后面会讲)。
列表的特点:
-
有序,每个元素有固定的位置(索引从 0 开始)
-
可以随时添加、删除、修改元素
-
通过
enumerate()可以同时获得索引和元素
在我们的程序中,列表就是菜单的“容器”,所有操作(增删改查)都围绕这个列表进行。
三、字典:描述每一道菜
每道菜有两个属性:菜名 和 价格。这两个属性天然适合用字典来存储。
字典的特点:
-
由键(key)和值(value)组成,用花括号
{}表示 -
键通常是字符串,值可以是任意类型
-
通过键来访问值,比如
item["name"]获得菜名,item["price"]获得价格
程序中的每一个菜品都是一个字典,整个菜单就是这些字典组成的列表。这种“列表套字典”的结构非常常用,比如学生信息、商品库存等场景。
四、函数:让代码模块化
如果所有代码都堆在 while True 循环里,程序会变得难以阅读和维护。函数的作用就是把一段独立的功能封装起来,起一个有意义的名字,需要的时候调用它。
1. 显示菜单的函数
-
参数
menu_list是待显示的列表 -
函数内部通过循环打印每个菜品
-
用
if not menu_list处理空列表的情况
2. 安全获取价格的函数
这个函数使用了 异常处理(try...except)来防止用户输入非数字导致程序崩溃。只要用户不输入合法数字,就会一直提示,直到输入正确为止。
3. 保存和加载文件的函数
这两个函数负责与文件交互,后面在文件操作部分会详细讲解。
使用函数的好处:
-
复用:显示菜单的地方只需调用
display_menu(menu),不用重复写打印代码 -
清晰:主流程(
main函数)变得简洁,一眼就能看出程序在做什么 -
易维护:如果将来想改变显示格式,只需修改
display_menu函数,不用到处找代码
五、文件操作:让数据持久化
如果程序关闭后数据就丢失,那它只是一个“一次性”工具。为了让数据长期保存,我们需要把菜单写入文件,下次启动时再读出来。
1. 选择文件格式
我们使用 JSON 格式,因为 Python 内置了 json 模块,可以很方便地将列表/字典转换为字符串,并写入文件。JSON 也是人类可读的,方便调试。
文件路径用变量定义:
2保存数据到文件
-
with open(...) as f:自动管理文件打开和关闭 -
'w'表示写入模式,如果文件不存在会创建,存在则覆盖 -
json.dump()把 Python 对象写入文件 -
ensure_ascii=False保证中文正常显示 -
indent=2让 JSON 格式化,好看 -
try...except捕获可能的文件错误,避免程序崩溃
3. 从文件加载数据
-
先判断文件是否存在,不存在则返回默认菜单
-
json.load(f)读取 JSON 文件并转换为 Python 对象 -
对读取的数据进行简单校验(确保是列表,且每个元素都是包含 name 和 price 的字典)
-
任何异常都返回默认菜单,保证程序能继续运行
4. 在增删改后自动保存
每当用户添加、删除或修改菜单后,我们都调用 save_menu(menu),把最新的列表写入文件。如果保存失败,会提示用户并保留内存中的数据(此时文件未更新,但用户可继续操作,下次保存会覆盖)。这样既保证了数据安全,又避免了因文件错误导致程序中断。
六、主流程:将所有部分串联起来
main 函数是程序的入口,它负责:
-
加载菜单(从文件或默认)
-
进入无限循环,等待用户输入
-
根据用户选择调用对应的功能
-
每次操作后如果修改了数据,就调用
save_menu保存
注意在每个分支中,我们都用
display_menu(menu)让用户看到当前菜单再操作,这很符合实际需求。七、运行效果
当你第一次运行程序时,会看到默认的四道菜。你可以尝试添加一道“可乐鸡翅 32”,删除“面条”,修改“炒菜”为“酸菜鱼 42”。每次操作后,
menu_data.json文件都会自动更新。关闭程序再打开,上次的修改依然存在。
八、总结与思考
通过这个完整的例子,我们学会了:
-
列表:如何存储一组数据,并通过索引访问。
-
字典:如何用键值对表示实体的多个属性。
-
函数:如何把重复逻辑封装起来,提高代码可读性和可维护性。
-
文件操作:如何使用 JSON 实现数据的持久化。
-
异常处理:如何让程序在意外情况下依然稳定运行。
这个程序虽然不大,但涵盖了实际项目中非常常用的技术点。你可以在此基础上扩展,比如添加按价格排序、搜索菜品、批量导入导出等功能。
希望这篇文章能帮助你更好地理解 Python 的这四个核心概念。如果你有任何问题,欢迎在评论区留言交流!
-
更多推荐



所有评论(0)