Python实战项目01:简易记事本系统

📌 实战系列:Python零基础综合实战项目(第1/5套)

🎯 项目定位 :零基础第一个完整工程级项目

告别零散代码片段!本项目整合你前面学的:循环、分支、函数、列表、文件读写、异常处理 ,做成一个可长期使用、数据永久保存的控制台记事本工具。

✅ 项目难度:⭐ 入门友好

✅ 前置知识:1--14章全套基础

✅ 学到的核心能力

  • 真实项目需求拆解能力

  • 数据持久化(程序关闭数据不丢)

  • 菜单交互系统设计

  • 函数模块化拆分代码

  • 异常容错、防崩溃处理

一、项目需求说明

制作一个终端记事本工具,具备以下功能:

  1. 添加新笔记
  2. 查看所有笔记
  3. 根据序号删除指定笔记
  4. 自动保存到本地 note_list.txt
  5. 程序重启自动加载历史笔记
  6. 输入错误不崩溃,友好提示
  7. 循环菜单,可一直操作,支持退出

二、项目架构拆解(核心思维)

新手写代码最大问题:一堆代码堆在一起!我们规范拆分 5 大模块函数:

  1. load_note():加载本地文件数据
  2. save_note():保存数据到本地文件
  3. add_note():新增笔记功能
  4. show_note():展示全部笔记
  5. del_note():删除指定笔记

主程序:while 循环菜单调度所有功能。

三、完整可运行源码(超详细注释)

python 复制代码
# ==========================================
# 项目:Python简易记事本(持久化版)
# 功能:增、删、查、自动保存、自动加载
# ==========================================
全局文件路径
FILE_PATH = "note_list.txt"
def load_note():
"""加载本地笔记文件,不存在则返回空列表"""
try:
with open(FILE_PATH, "r", encoding="utf-8") as f:
# 读取每一行,去除换行符,过滤空行
data = [line.strip() for line in f.readlines() if line.strip()]
return data
except FileNotFoundError:
# 文件不存在,首次运行返回空列表
return []
except Exception as e:
print("读取文件异常:", e)
return []
def save_note(note_list):
"""保存笔记列表到本地文件"""
with open(FILE_PATH, "w", encoding="utf-8") as f:
for note in note_list:
f.write(note + "\n")
def add_note():
"""新增笔记"""
content = input("请输入新笔记内容:")
note_list = load_note()
note_list.append(content)
save_note(note_list)
print("✅ 笔记添加成功!")
def show_note():
"""展示所有笔记"""
note_list = load_note()
if not note_list:
print("📭 暂无任何笔记!")
return
print("\n========= 我的笔记列表 =========")
for index, item in enumerate(note_list, start=1):
print(f"{index}. {item}")
print("==============================\n")
def del_note():
"""根据序号删除笔记"""
note_list = load_note()
if not note_list:
print("暂无笔记,无需删除!")
return
show_note()
try:
num = int(input("请输入要删除的笔记序号:"))
# 判断序号合法范围
if 1 <= num <= len(note_list):
del note_list[num - 1]
save_note(note_list)
print("✅ 删除成功!")
else:
print("❌ 序号超出范围!")
except ValueError:
print("❌ 请输入合法数字!")
def main():
"""主菜单系统"""
print("===== 欢迎使用简易记事本 =====")
while True:
print("\n【1】新增笔记")
print("【2】查看全部笔记")
print("【3】删除笔记")
print("【0】退出程序")
choice = input("请输入功能序号:")
if choice == "1":
add_note()
elif choice == "2":
show_note()
elif choice == "3":
del_note()
elif choice == "0":
print("👋 感谢使用,程序退出!")
break
else:
print("❌ 输入有误,请选择正确序号!")
程序入口
if name == "main":
main()

四、项目运行效果

  1. 首次运行自动创建 note_list.txt
  2. 新增笔记 → 自动保存到文件
  3. 查看笔记 → 读取文件展示
  4. 删除笔记 → 修改文件并更新
  5. 关闭程序重启,数据永久保留

五、核心知识点复盘

  • 文件持久化:内存数据 和 磁盘数据区别
  • 模块化编程:一个功能一个函数
  • 异常处理:文件不存在、输入非数字容错
  • enumerate 遍历:带序号展示列表
  • while 菜单框架:几乎所有管理系统的通用模板

六、课后拓展作业(必做,提升极强)

  1. 给笔记增加时间戳,每条笔记自动记录创建时间
  2. 增加搜索笔记功能,输入关键词匹配内容
  3. 增加修改笔记功能,根据序号修改内容
  4. 增加清空所有笔记功能
相关推荐
甜到心里的蛋糕4 小时前
云主机部署图片/视频管理系统的实践经验
python·音视频
CV工程师丁Sir4 小时前
ArkWeb 手记 06|window.open 与页面跳转拦截
开发语言·php·harmonyos
夜不会漫长4 小时前
C++:内存管理
java·开发语言·c++
小园子的小菜4 小时前
FastAPI 全方位入门实战:高性能 Python Web 框架开发指南
python·pycharm·fastapi
徐小黑ACG4 小时前
Golang 基础01
开发语言·后端·golang
Helix2504 小时前
Python爬虫零基础实战:3步抓取网页数据并导出Excel
爬虫·python·beautifulsoup·excel·python教程·requests·网页数据
进击的大海贼5 小时前
基于C#开发的久坐提醒工具
开发语言·c#
平生幻5 小时前
unbuntu虚拟机确认python安装位置
开发语言·python
jason.zeng@15022075 小时前
(七)「固化 Rest 接口 + Text-to-SQL 灵活查询」双模式 Agent 架构教程
数据库·python·sql·ai·架构·langchain·ai编程
运维行者_5 小时前
PHP性能监控怎么做?从响应时间到慢函数的6个关键指标
运维·服务器·开发语言·网络·支持向量机·php·接口隔离原则