title: 联系人簿 description: 一个在循环中运行的 CLI 应用,你可以在会话期间添加、搜索和列出联系人。
联系人簿
Pip 嘿!我在六个站点散落着很多联系人,我总是记不住他们。电话号码、邮箱,到处都是。你能为我建一个简单的联系人簿,可以在终端中运行吗?添加人员、按名字搜索、列出所有人。不需要花哨的功能,只需要能用就行 🙏
你要构建什么
Commands: add / search / list / quit
> add
Name: 张三
Phone: 07700 900123
Email: [email protected]
Saved.
> search
Name: 张三
张三 - 07700 900123 - [email protected]
> list
1. 张三 - 07700 900123
2. ...
> quit你需要什么
- 字典 - 每个联系人是一个字典;联系人簿是它们的一个列表
- 列表 - 所有联系人都在一个列表中,你可以遍历它
- 函数 - 一个函数对应一个命令,这样代码保持清晰易读
- 控制流 - 一个持续运行直到用户输入 "quit" 的循环
- 字符串 - 不区分大小写的搜索、名字格式化
提示
将每个联系人存储为一个字典。 使用 "name"、"phone"、"email" 这样的键。将所有联系人保存在循环外的一个列表中,这样它们可以在命令之间持久保存。
使用 while 循环和命令检查是很自然的结构。 读取命令,调用相应的函数,重复。当用户输入 "quit" 时跳出循环。
对于搜索,部分匹配比精确匹配更有用。 检查搜索词是否出现在名字中(不区分大小写)意味着 "zhang" 可以找到 "张三"。
进阶
核心循环工作后,你可以:
- 保存和加载。 当用户退出时,将所有联系人写入 JSON 文件。当脚本启动时,如果文件存在就加载它。这需要文件相关的知识。
- 删除联系人。 添加一个
delete命令,可以按名字删除联系人。 - 排序列表。 在打印之前,按名字字母顺序对列表输出进行排序。

