该示例利用前面学习的 Python3 基础知识来实现一个简易的便签功能,该便签的功能包含:
(1)查看所有便签
(2)添加新便签
(3)修改已有便签
(4)删除便签
(5)数据持久化存储,将便签的数据存储到文件,便签列表通过 JSON 文件保存
注意,该示例程序使用了 Python 的 json 和 os 内置模块,其中:
json:是 Python 内置标准模块,专门用来处理 JSON 格式数据
os:是 Python 内置标准模块,让代码直接和操作系统交互,如文件、路径、文件夹、环境变量等等
示例代码:
import json
import os
# 定义便签数据存储的文件名
NOTES_FILE = "notes.json"
def load_notes():
"""
从JSON文件加载便签数据
如果文件不存在,返回空列表
"""
# 检查文件是否存在
if os.path.exists(NOTES_FILE):
try:
# 读取并解析JSON文件
with open(NOTES_FILE, "r", encoding="utf-8") as f:
return json.load(f)
except json.JSONDecodeError:
# 文件损坏时返回空列表
return []
# 文件不存在,返回空列表
return []
def save_notes(notes):
"""
将便签列表保存到JSON文件
:param notes: 便签数据列表
"""
with open(NOTES_FILE, "w", encoding="utf-8") as f:
# indent=4 让JSON文件格式化存储,方便查看
json.dump(notes, f, ensure_ascii=False, indent=4)
def show_all_notes(notes):
"""展示所有便签"""
if not notes:
print("\n暂无便签内容!")
return
print("\n===== 我的便签列表 =====")
# 遍历展示便签(索引从1开始,方便用户操作)
for index, note in enumerate(notes, 1):
print(f"\n{index}. {note}")
print("========================\n")
def add_note(notes):
"""添加新便签"""
content = input("请输入便签内容:").strip()
if content:
notes.append(content)
save_notes(notes)
print("便签添加成功!")
else:
print("便签内容不能为空!")
def modify_note(notes):
"""修改指定便签"""
show_all_notes(notes)
if not notes:
return
try:
# 获取用户输入的便签编号
note_index = int(input("请输入要修改的便签编号:")) - 1
# 校验编号是否有效
if 0 <= note_index < len(notes):
new_content = input("请输入新的便签内容:").strip()
if new_content:
notes[note_index] = new_content
save_notes(notes)
print("便签修改成功!")
else:
print("便签内容不能为空!")
else:
print("无效的便签编号!")
except ValueError:
print("请输入有效的数字!")
def delete_note(notes):
"""删除指定便签"""
show_all_notes(notes)
if not notes:
return
try:
note_index = int(input("请输入要删除的便签编号:")) - 1
if 0 <= note_index < len(notes):
deleted_note = notes.pop(note_index)
save_notes(notes)
print(f"已删除便签:{deleted_note}")
else:
print("无效的便签编号!")
except ValueError:
print("请输入有效的数字!")
def main():
"""主程序入口"""
# 加载已保存的便签
notes = load_notes()
print("🎉 欢迎使用本地便签程序!")
while True:
# 主菜单
print("\n===== 便签菜单 =====")
print("1. 查看所有便签")
print("2. 添加新便签")
print("3. 修改便签")
print("4. 删除便签")
print("0. 退出程序")
print("===================")
choice = input("请选择操作(0-4):").strip()
if choice == "1":
show_all_notes(notes)
elif choice == "2":
add_note(notes)
elif choice == "3":
modify_note(notes)
elif choice == "4":
delete_note(notes)
elif choice == "0":
print("程序已退出,便签已自动保存!")
break
else:
print("无效选择,请输入0-4的数字!")
if __name__ == "__main__":
main()运行结果:
🎉 欢迎使用本地便签程序!
===== 便签菜单 =====
1. 查看所有便签
2. 添加新便签
3. 修改便签
4. 删除便签
0. 退出程序
===================
请选择操作(0-4):2
请输入便签内容:今天准备学习 Python 编程
便签添加成功!
===== 便签菜单 =====
1. 查看所有便签
2. 添加新便签
3. 修改便签
4. 删除便签
0. 退出程序
===================
请选择操作(0-4):1
===== 我的便签列表 =====
1. 今天准备学习 Python 编程
========================
===== 便签菜单 =====
1. 查看所有便签
2. 添加新便签
3. 修改便签
4. 删除便签
0. 退出程序
===================
请选择操作(0-4):3
===== 我的便签列表 =====
1. 今天准备学习 Python 编程
========================
请输入要修改的便签编号:1
请输入新的便签内容:今天准备学习 Pyton 编程,主要学习基础知识。
便签修改成功!
===== 便签菜单 =====
1. 查看所有便签
2. 添加新便签
3. 修改便签
4. 删除便签
0. 退出程序
===================
请选择操作(0-4):1
===== 我的便签列表 =====
1. 今天准备学习 Pyton 编程,主要学习基础知识。
========================
===== 便签菜单 =====
1. 查看所有便签
2. 添加新便签
3. 修改便签
4. 删除便签
0. 退出程序
===================
请选择操作(0-4):2
请输入便签内容:明天准备出去旅游
便签添加成功!
===== 便签菜单 =====
1. 查看所有便签
2. 添加新便签
3. 修改便签
4. 删除便签
0. 退出程序
===================
请选择操作(0-4):1
===== 我的便签列表 =====
1. 今天准备学习 Pyton 编程,主要学习基础知识。
2. 明天准备出去旅游
========================
===== 便签菜单 =====
1. 查看所有便签
2. 添加新便签
3. 修改便签
4. 删除便签
0. 退出程序
===================
请选择操作(0-4):4
===== 我的便签列表 =====
1. 今天准备学习 Pyton 编程,主要学习基础知识。
2. 明天准备出去旅游
========================
请输入要删除的便签编号:2
已删除便签:明天准备出去旅游
===== 便签菜单 =====
1. 查看所有便签
2. 添加新便签
3. 修改便签
4. 删除便签
0. 退出程序
===================
请选择操作(0-4):1
===== 我的便签列表 =====
1. 今天准备学习 Pyton 编程,主要学习基础知识。
========================
===== 便签菜单 =====
1. 查看所有便签
2. 添加新便签
3. 修改便签
4. 删除便签
0. 退出程序
===================
请选择操作(0-4):0
程序已退出,便签已自动保存!示例核心功能说明:
(1)数据存储:所有便签以列表格式存储在 notes.json 文件中,存储格式如下:
[
"记得买牛奶",
"学习Python便签程序",
"周末去公园散步"
]注意,程序启动时自动加载文件,修改后自动保存
(2)核心函数:
load_notes():读取 JSON 文件,加载便签数据(文件不存在 / 损坏时返回空列表)
save_notes():将便签列表写入 JSON 文件,支持中文格式化存储
show_all_notes():遍历并展示所有便签
add/modify/delete_note():增删改便签的核心逻辑