当前位置: 首页 > article >正文

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&#xff1a;用Tkinter写日志管理系统&#xff08;中下等难度&#xff09; Python项目26&#xff1a;设计学生成绩管理系统&#xff08;简易版&#xff09; Python项目25&#xff1a;带滚动效果的商场抽奖系统&…...

Redis 01 02章——入门概述与安装配置

一、入门概述 &#xff08;1&#xff09;是什么 Redis&#xff1a;REmote Dictionary Server&#xff08;远程字典服务器&#xff09;官网解释&#xff1a;Remote Dictionary Server(远程字典服务)是完全开源的&#xff0c;使用ANSIC语言编写遵守BSD协议&#xff0c;是一个高…...

Large Language Model Distilling Medication Recommendation Model

摘要&#xff1a;药物推荐是智能医疗系统的一个重要方面&#xff0c;因为它涉及根据患者的特定健康需求开具最合适的药物。不幸的是&#xff0c;目前使用的许多复杂模型往往忽视医疗数据的细微语义&#xff0c;而仅仅严重依赖于标识信息。此外&#xff0c;这些模型在处理首次就…...

2025最新版Node.js下载安装~保姆级教程

1. node中文官网地址&#xff1a;http://nodejs.cn/download/ 2.打开node官网下载压缩包&#xff1a; 根据操作系统不同选择不同版本&#xff08;win7系统建议安装v12.x&#xff09; 我这里选择最新版win 64位 3.安装node ①点击对话框中的“Next”&#xff0c;勾选同意后点…...

deepseek:三个月备考高级系统架构师

一、备考总体规划&#xff08;2025年2月11日 - 2025年5月&#xff09; 1. 第一阶段&#xff1a;基础夯实&#xff08;2025年2月11日 - 2025年3月10日&#xff09; 目标&#xff1a;快速掌握系统架构师考试的核心知识点。 重点内容&#xff1a; 计算机组成原理、操作系统、数据…...

springboot如何将lib和jar分离

遇到一个问题&#xff0c;就是每次maven package或者maven install后target中的jar很大&#xff0c;少的50几MB&#xff0c;大的100多兆 优化前&#xff1a; 优化后&#xff1a; 优化前 优化后压缩率77.2MB4.65MB93% 具体方案&#xff1a; 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&#xff0c;顺序写入和消费是Kafka的重要特性&#xff0c;但需要正确的配置和使用方式才能保证。本文需要解释清楚Kafka如何通过分区来实现顺序性&#xff0c;以及生产者和消费者应该如何配合。   首先&#xff0c;顺序写入。Kafka的消息是按分区追加写入…...

Electron 全面解析:跨平台桌面应用开发指南

引言 在当今多平台并存的数字时代&#xff0c;如何高效开发跨平台桌面应用成为开发者面临的重要挑战。Electron作为GitHub开源的跨平台框架&#xff0c;凭借其独特的Web技术融合能力&#xff0c;已成为构建桌面应用的热门选择。本文将深入探讨Electron的核心原理、开发实践及未…...

Node.js技术原理分析系列——Node.js调试能力分析

本文由体验技术团队屈金雄原创。 Node.js 是一个开源的、跨平台的 JavaScript 运行时环境&#xff0c;它允许开发者在服务器端运行 JavaScript 代码。Node.js 是基于 Chrome V8引擎构建的&#xff0c;专为高性能、高并发的网络应用而设计&#xff0c;广泛应用于构建服务器端应…...

从技术债务到架构升级,滴滴国际化外卖的变革

背 景 商家营销简述 在外卖平台的运营中&#xff0c;我们致力于通过灵活的补贴策略激励商家&#xff0c;与商家共同打造良好的合作关系&#xff0c;也会提供多样化的营销活动&#xff0c;帮助商家吸引更多用户下单。通过这些活动&#xff0c;不仅能够提高商家的销量&#xff0c…...

DeepSeek教unity------MessagePack-05

动态反序列化 当调用 MessagePackSerializer.Deserialize<object> 或 MessagePackSerializer.Deserialize<dynamic> 时&#xff0c;二进制数据中存在的任何值都将被转换为基本值&#xff0c;即 bool、char、sbyte、byte、short、int、long、ushort、uint、ulong、…...

SQL Query美化

推荐一个可以美化Query的网站&#xff01; 名称&#xff1a;SQL formatter | Online free SQL Beautifier 地址&#xff1a;https://sqlformatter.org/# 在处理 SQL 查询语句时&#xff0c;可读性是至关重要的。 杂乱无章的 SQL代码不仅难以理解&#xff0c;还会给后续的维…...

探索RDMA技术:从基础到实践

1. 引言 在当今的高性能计算(HPC)和数据中心领域,数据传输的效率和速度至关重要。RDMA(Remote Direct Memory Access,远程直接内存访问)技术作为一种高效的网络通信机制,能够显著减少数据传输的延迟和CPU负载。本文将从基础到实践,详细介绍RDMA技术及其编程模型,帮助…...

2025 docker可视化管理面板DPanel的安装

1.什么是 DPanel &#xff1f; DPanel 是一款 Docker 可视化管理面板&#xff0c;旨在简化 Docker 容器、镜像和文件的管理。它提供了一系列功能&#xff0c;使用户能够更轻松地管理和部署 Docker 环境。 软件特点&#xff1a; 可视化管理&#xff1a;提供直观的用户界面&#…...

mapbox V3 新特性,添加下雪效果

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;mapbox 从入门到精通 文章目录 一、&#x1f340;前言1.1 ☘️mapboxgl.Map 地图对象…...

【STM32】H743的以太网MAC控制器的一个特殊功能

调试743的MAC&#xff0c;翻阅手册的时候&#xff0c;发现了一个有意思的功能 混杂模式 H743的MAC控制器&#xff0c;可以设置为混杂模式&#xff0c;这就意味着它可以做一些网络监控的应用&#xff0c;譬如连接具备端口镜像功能的交换机&#xff0c;然后直接代替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&#xff08;Serial Peripheral Interface&#xff09;即串行外设接口&#xff0c;是一种高速、全双工、同步的通信总线&#xff0c;常用于微控制器与各种外设&#xff08;如传感器、存储器等&#xff09;之间的通信。STM32 系列微控制器提供了多个 SPI 接口&a…...

如何设置Python爬虫的User-Agent?

在Python爬虫中设置User-Agent是模拟浏览器行为、避免被目标网站识别为爬虫的重要手段。User-Agent是一个HTTP请求头&#xff0c;用于标识客户端软件&#xff08;通常是浏览器&#xff09;的类型和版本信息。通过设置合适的User-Agent&#xff0c;可以提高爬虫的稳定性和成功率…...

二、交换机的vlan子设备接入

一、交换机的vlan设置-CSDN博客 二、交换机的vlan子设备接入-CSDN博客 接上篇的文章&#xff0c;本文接入了子设备 网络结构如下&#xff1a; 用路由器A和POE交换机B代替第一篇中的笔记本电脑&#xff0c;路由器A和交换机B都关闭DHCP服务&#xff0c;并分别接入一个IPC&#…...

Spring IoC的实现机制是什么?

大家好&#xff0c;我是锋哥。今天分享关于【Spring IoC的实现机制是什么&#xff1f;】面试题。希望对大家有帮助&#xff1b; Spring IoC的实现机制是什么&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Spring IoC&#xff08;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 三台服务器同时进行&#xff0c;下载安装包 [rootlocalhost ~]#yum module disable mysql [rootlocalhost ~]#yum ins…...

对openharmony HDF驱动框架的C/S设计模式和单例类的说明

在分析openharmony的HDF驱动框架时我们会发现用了很多面向对象的思想&#xff0c;例如类继承、接口、单例类等&#xff0c;本来应该是好事情&#xff0c;**但使用时对象之间的关系交错复杂&#xff0c;不太符合linux内核分层分模块的思路&#xff0c;导致整体理解起来比较困难&…...

联合汽车电子嵌入式面试题及参考答案

所使用的板子 Flash 内存是多少,单位 b 指的是 byte 还是 bit? 不同的嵌入式板子具有不同的 Flash 内存容量。常见的有几 KB 到几 MB 甚至更大。比如一些小型的单片机开发板可能只有几 KB 的 Flash,如 AT89C51 单片机的 Flash 一般为 4KB,这里的 KB 是指千字节(kilobyte)…...

Vue 2 路由指南:从基础到高级

注意&#xff1a;对于代码看不清的部分&#xff0c;用鼠标选中就能看到了&#xff0c;背景颜色和字体颜色过于接近&#xff0c;我也不知道怎么调&#xff0c;只能这样子先看着了 一、Vue Router 是什么&#xff1f; Vue Router 是 Vue.js 官方的路由管理器&#xff0c;它允许…...

vue学习10

1.GPT和Copilot Copilot Tab接受 删除键&#xff0c;不接受 ctrlenter更多方案 更适合的是修改方向 const submitForm async () > {//等待校验结果await formRef.value.validate()//提交修改await userUpdateInfoService(form.value)//通知user模块&#xff0c;进行数据更…...

WebSocket 握手过程

文章目录 1. WebSocket 握手过程概述2. 客户端发送握手请求3. 服务器响应握手请求4. 客户端验证握手响应5. 建立 WebSocket 连接6. 安全性与注意事项7. 应用示例 在现代 Web 开发中&#xff0c;WebSocket 协议因其高效的实时通信能力而被广泛应用。WebSocket 允许客户端和服务器…...

如何正确安装Stable Diffusion Web UI以及对应的xFormers

本文是我总结的步骤&#xff0c;验证了几次保证是对的。因为正确的安装 Stable Diffusion Web UI 以及对应的 xFormers 实在是太麻烦了&#xff0c;官方和网上的步骤都是残缺和分散的&#xff0c;加上国内网络速度不理想&#xff0c;所以需要一些额外步骤&#xff0c;之前研究出…...

图形渲染(一)——Skia、OpenGL、Mesa 和 Vulkan简介

1.Skia —— 2D 图形库 Skia 是一个 2D 图形库&#xff0c;它的作用是为开发者提供一个高层次的绘图接口&#xff0c;方便他们进行 2D 图形渲染&#xff08;比如绘制文本、形状、图像等&#xff09;。Skia 本身不直接管理 GPU 或进行底层的渲染工作&#xff0c;而是通过 底层图…...