Python项目31:待办事项列表应用1.0(命令行界面+Json+类+初学者必做)
------------★Python练手项目源码★------------
Python项目27:用Tkinter写日志管理系统(中下等难度)
Python项目26:设计学生成绩管理系统(简易版)
Python项目25:带滚动效果的商场抽奖系统(安排!!!)
Python项目24:基于Tkinter图形化界面,实现的学生课堂点名系统
Python项目23:(简易版)年会员工抽奖程序
Python项目22:一个简单的记账系统(收入+支出+查询)
Python项目21:双色球历史数据爬虫+数据分析小工具
Python项目源码20:银行管理系统(开户、查询、取款、存款、转账、锁定、解锁、退出)
Python项目19:学员信息管理系统(简易版)
Python项目18:使用Pillow模块,随机生成4位数的图片验证码
Python项目17:教你制作一副帅气的春联
Python项目16:教你使用pillow把女神的图片,添加表白文字。
Python项目15:Pygame制作,新年动态烟花
Python项目14:使用random,模拟扑克牌发牌+猜单词游戏
Python项目12:破解zip压缩包的密码
Python项目10:使用Tkinter批量新建文件夹
Python项目09:使用filestools模块,批量添加图片水印
Python小项目05:使用pywifi模块,暴力破解WIFI密码 !!亲测有效
Python经典小游戏02:字母数字代码雨

1.这个待办事项列表应用具以下功能:
添加任务:用户可以输入任务内容并添加到列表中。
查看任务:显示所有任务,用复选框显示完成状态。
标记完成:可以通过序号将任务标记为已完成。
删除任务:可以通过序号删除任意任务。
持久化存储:所有任务会自动保存到JSON文件中。
错误处理:包含基本的输入验证和错误处理。

2.使用方法:运行程序后会显示功能菜单,输入数字选择相应操作,数据会自动保存到同目录下的tasks.json文件,退出时会自动保存当前任务列表。软件运行后的效果,我还有3个任务没有完成!
图片
3.代码类思想优势:更好的代码组织:相关功能集中在一个类中,状态管理:通过实例变量维护任务列表状态,封装性:隐藏内部实现细节,暴露清晰接口。可扩展性:更容易添加新功能(如任务分类/优先级等)。可重用性:可以创建多个独立的待办列表实例。
0.封装为类:
将数据和操作封装在TodoList类中
任务数据存储为实例变量self.tasks
文件名存储为实例变量self.filename
访问控制:
使用下划线前缀表示私有方法(_load_tasks, _save_tasks, _show_menu)
公共方法保持原有功能接口
消除全局变量:
所有数据都存储在实例属性中
不再需要传递tasks参数
提高可维护性:
相关功能集中在一个类中
方法按功能模块化组织
更容易扩展和重用
改进数据存储:
文件路径可配置(通过构造函数参数)
存储逻辑与业务逻辑分离
# -*- coding: utf-8 -*-
# @Author : 小红牛
# 微信公众号:WdPython
import json
import osclass TodoList:def __init__(self, filename="tasks.json"):self.filename = filenameself.tasks = self._load_tasks()def _load_tasks(self):"""加载任务列表"""if os.path.exists(self.filename):with open(self.filename, "r") as f:return json.load(f)return []def _save_tasks(self):"""保存任务列表"""with open(self.filename, "w") as f:# indent=2的作用是指定缩进级别为2个空格,数据可读性json.dump(self.tasks, f, indent=2)# 静态方法@staticmethoddef _show_menu():"""显示菜单"""print("\n---待办事项功能列表---")print("1. 添加新任务")print("2. 查看所有任务")print("3. 标记任务为已完成")print("4. 删除任务")print("5. 保存并退出")def add_task(self):"""添加新任务"""task_name = input("请输入任务内容: ").strip()if task_name:self.tasks.append({"name": task_name, "completed": False})print(f"已添加任务: {task_name}")else:print("任务内容不能为空!")def show_tasks(self):"""显示所有任务"""if not self.tasks:print("当前没有任务!")returnprint("\n任务列表:")for i, task in enumerate(self.tasks, 1):status = "已完成" if task["completed"] else " "print(f"{i}. [{status}] {task['name']}")def complete_task(self):"""标记任务为已完成"""self.show_tasks()try:task_num = int(input("请输入要标记完成的任务序号: "))if 1 <= task_num <= len(self.tasks):self.tasks[task_num - 1]["completed"] = Trueprint("任务标记为已完成!")else:print("无效的任务序号!")except ValueError:print("请输入有效的数字!")def delete_task(self):"""删除任务"""self.show_tasks()try:task_num = int(input("请输入要删除的任务序号: "))if 1 <= task_num <= len(self.tasks):removed = self.tasks.pop(task_num - 1)print(f"已删除任务: {removed['name']}")else:print("无效的任务序号!")except ValueError:print("请输入有效的数字!")def run(self):"""运行主程序"""while True:self._show_menu()choice = input("请选择操作 (1-5): ").strip()if choice == "1":self.add_task()elif choice == "2":self.show_tasks()elif choice == "3":self.complete_task()elif choice == "4":self.delete_task()elif choice == "5":self._save_tasks()print("已保存任务,再见!")breakelse:print("无效的输入,请选择1-5之间的数字!")if __name__ == "__main__":app = TodoList()app.run()
完毕!!感谢您的收看
----------★★跳转到历史博文集合★★----------
我的零基础Python教程,Python入门篇 进阶篇 视频教程 Py安装py项目 Python模块 Python爬虫 Json Xpath 正则表达式 Selenium Etree CssGui程序开发 Tkinter Pyqt5 列表元组字典数据可视化 matplotlib 词云图 Pyecharts 海龟画图 Pandas Bug处理 电脑小知识office自动化办公 编程工具 NumPy Pygame
相关文章:
Python项目31:待办事项列表应用1.0(命令行界面+Json+类+初学者必做)
------------★Python练手项目源码★------------ Python项目27:用Tkinter写日志管理系统(中下等难度) Python项目26:设计学生成绩管理系统(简易版) Python项目25:带滚动效果的商场抽奖系统&…...
Redis 01 02章——入门概述与安装配置
一、入门概述 (1)是什么 Redis:REmote Dictionary Server(远程字典服务器)官网解释:Remote Dictionary Server(远程字典服务)是完全开源的,使用ANSIC语言编写遵守BSD协议,是一个高…...
Large Language Model Distilling Medication Recommendation Model
摘要:药物推荐是智能医疗系统的一个重要方面,因为它涉及根据患者的特定健康需求开具最合适的药物。不幸的是,目前使用的许多复杂模型往往忽视医疗数据的细微语义,而仅仅严重依赖于标识信息。此外,这些模型在处理首次就…...
2025最新版Node.js下载安装~保姆级教程
1. node中文官网地址:http://nodejs.cn/download/ 2.打开node官网下载压缩包: 根据操作系统不同选择不同版本(win7系统建议安装v12.x) 我这里选择最新版win 64位 3.安装node ①点击对话框中的“Next”,勾选同意后点…...
deepseek:三个月备考高级系统架构师
一、备考总体规划(2025年2月11日 - 2025年5月) 1. 第一阶段:基础夯实(2025年2月11日 - 2025年3月10日) 目标:快速掌握系统架构师考试的核心知识点。 重点内容: 计算机组成原理、操作系统、数据…...
springboot如何将lib和jar分离
遇到一个问题,就是每次maven package或者maven install后target中的jar很大,少的50几MB,大的100多兆 优化前: 优化后: 优化前 优化后压缩率77.2MB4.65MB93% 具体方案: pom.xml中 <build><…...
解锁建造者模式:Java 编程中的对象构建秘籍
系列文章目录 后续补充~~~~ 文章目录 一、引言二、建造者模式原理剖析2.1 定义与概念2.2 模式结构与角色2.2.1 产品(Product)2.2.2 建造者(Builder)2.2.3 具体建造者(ConcreteBuilder)2.2.4 指挥者(Director)2.3 工作流程与交互机制三、建造者模式在 Java 中的优势3.1 …...
RocketMQ和Kafka如何实现顺序写入和顺序消费?
0 前言 先说明kafka,顺序写入和消费是Kafka的重要特性,但需要正确的配置和使用方式才能保证。本文需要解释清楚Kafka如何通过分区来实现顺序性,以及生产者和消费者应该如何配合。 首先,顺序写入。Kafka的消息是按分区追加写入…...
Electron 全面解析:跨平台桌面应用开发指南
引言 在当今多平台并存的数字时代,如何高效开发跨平台桌面应用成为开发者面临的重要挑战。Electron作为GitHub开源的跨平台框架,凭借其独特的Web技术融合能力,已成为构建桌面应用的热门选择。本文将深入探讨Electron的核心原理、开发实践及未…...
Node.js技术原理分析系列——Node.js调试能力分析
本文由体验技术团队屈金雄原创。 Node.js 是一个开源的、跨平台的 JavaScript 运行时环境,它允许开发者在服务器端运行 JavaScript 代码。Node.js 是基于 Chrome V8引擎构建的,专为高性能、高并发的网络应用而设计,广泛应用于构建服务器端应…...
从技术债务到架构升级,滴滴国际化外卖的变革
背 景 商家营销简述 在外卖平台的运营中,我们致力于通过灵活的补贴策略激励商家,与商家共同打造良好的合作关系,也会提供多样化的营销活动,帮助商家吸引更多用户下单。通过这些活动,不仅能够提高商家的销量,…...
DeepSeek教unity------MessagePack-05
动态反序列化 当调用 MessagePackSerializer.Deserialize<object> 或 MessagePackSerializer.Deserialize<dynamic> 时,二进制数据中存在的任何值都将被转换为基本值,即 bool、char、sbyte、byte、short、int、long、ushort、uint、ulong、…...
SQL Query美化
推荐一个可以美化Query的网站! 名称:SQL formatter | Online free SQL Beautifier 地址:https://sqlformatter.org/# 在处理 SQL 查询语句时,可读性是至关重要的。 杂乱无章的 SQL代码不仅难以理解,还会给后续的维…...
探索RDMA技术:从基础到实践
1. 引言 在当今的高性能计算(HPC)和数据中心领域,数据传输的效率和速度至关重要。RDMA(Remote Direct Memory Access,远程直接内存访问)技术作为一种高效的网络通信机制,能够显著减少数据传输的延迟和CPU负载。本文将从基础到实践,详细介绍RDMA技术及其编程模型,帮助…...
2025 docker可视化管理面板DPanel的安装
1.什么是 DPanel ? DPanel 是一款 Docker 可视化管理面板,旨在简化 Docker 容器、镜像和文件的管理。它提供了一系列功能,使用户能够更轻松地管理和部署 Docker 环境。 软件特点: 可视化管理:提供直观的用户界面&#…...
mapbox V3 新特性,添加下雪效果
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象…...
【STM32】H743的以太网MAC控制器的一个特殊功能
调试743的MAC,翻阅手册的时候,发现了一个有意思的功能 混杂模式 H743的MAC控制器,可以设置为混杂模式,这就意味着它可以做一些网络监控的应用,譬如连接具备端口镜像功能的交换机,然后直接代替PC实现网络数据…...
WEB攻防-第60天:PHP反序列化POP链构造魔术方法流程漏洞触发条件属性修改
目录 一、序列化与反序列化基础 1.1 什么是序列化与反序列化 二、魔术方法的生命周期 2.1 常见的魔术方法 2.2 模式方法的生命周期触发调用 2.2.1 __construct() 2.2.2 __destruct() 2.2.3 __sleep() 2.2.4 __wakeup() 2.2.5 __invoke() 2.2.6 __toS…...
STM32硬件SPI函数解析与示例
1. SPI 简介 SPI(Serial Peripheral Interface)即串行外设接口,是一种高速、全双工、同步的通信总线,常用于微控制器与各种外设(如传感器、存储器等)之间的通信。STM32 系列微控制器提供了多个 SPI 接口&a…...
如何设置Python爬虫的User-Agent?
在Python爬虫中设置User-Agent是模拟浏览器行为、避免被目标网站识别为爬虫的重要手段。User-Agent是一个HTTP请求头,用于标识客户端软件(通常是浏览器)的类型和版本信息。通过设置合适的User-Agent,可以提高爬虫的稳定性和成功率…...
二、交换机的vlan子设备接入
一、交换机的vlan设置-CSDN博客 二、交换机的vlan子设备接入-CSDN博客 接上篇的文章,本文接入了子设备 网络结构如下: 用路由器A和POE交换机B代替第一篇中的笔记本电脑,路由器A和交换机B都关闭DHCP服务,并分别接入一个IPC&#…...
Spring IoC的实现机制是什么?
大家好,我是锋哥。今天分享关于【Spring IoC的实现机制是什么?】面试题。希望对大家有帮助; Spring IoC的实现机制是什么? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Spring IoC(Inversion of Control…...
配置mysql8.0使用PXC实现高可用。
准备好下面三台服务器 cat >> /etc/hosts << EOF 192.168.1.11 pxc1 192.168.1.12 pxc2 192.168.1.13 pxc3 EOF 三台服务器同时进行,下载安装包 [rootlocalhost ~]#yum module disable mysql [rootlocalhost ~]#yum ins…...
对openharmony HDF驱动框架的C/S设计模式和单例类的说明
在分析openharmony的HDF驱动框架时我们会发现用了很多面向对象的思想,例如类继承、接口、单例类等,本来应该是好事情,**但使用时对象之间的关系交错复杂,不太符合linux内核分层分模块的思路,导致整体理解起来比较困难&…...
联合汽车电子嵌入式面试题及参考答案
所使用的板子 Flash 内存是多少,单位 b 指的是 byte 还是 bit? 不同的嵌入式板子具有不同的 Flash 内存容量。常见的有几 KB 到几 MB 甚至更大。比如一些小型的单片机开发板可能只有几 KB 的 Flash,如 AT89C51 单片机的 Flash 一般为 4KB,这里的 KB 是指千字节(kilobyte)…...
Vue 2 路由指南:从基础到高级
注意:对于代码看不清的部分,用鼠标选中就能看到了,背景颜色和字体颜色过于接近,我也不知道怎么调,只能这样子先看着了 一、Vue Router 是什么? Vue Router 是 Vue.js 官方的路由管理器,它允许…...
vue学习10
1.GPT和Copilot Copilot Tab接受 删除键,不接受 ctrlenter更多方案 更适合的是修改方向 const submitForm async () > {//等待校验结果await formRef.value.validate()//提交修改await userUpdateInfoService(form.value)//通知user模块,进行数据更…...
WebSocket 握手过程
文章目录 1. WebSocket 握手过程概述2. 客户端发送握手请求3. 服务器响应握手请求4. 客户端验证握手响应5. 建立 WebSocket 连接6. 安全性与注意事项7. 应用示例 在现代 Web 开发中,WebSocket 协议因其高效的实时通信能力而被广泛应用。WebSocket 允许客户端和服务器…...
如何正确安装Stable Diffusion Web UI以及对应的xFormers
本文是我总结的步骤,验证了几次保证是对的。因为正确的安装 Stable Diffusion Web UI 以及对应的 xFormers 实在是太麻烦了,官方和网上的步骤都是残缺和分散的,加上国内网络速度不理想,所以需要一些额外步骤,之前研究出…...
图形渲染(一)——Skia、OpenGL、Mesa 和 Vulkan简介
1.Skia —— 2D 图形库 Skia 是一个 2D 图形库,它的作用是为开发者提供一个高层次的绘图接口,方便他们进行 2D 图形渲染(比如绘制文本、形状、图像等)。Skia 本身不直接管理 GPU 或进行底层的渲染工作,而是通过 底层图…...
