用Python实现一个简单的命令行待办事项应用

在日常生活中,待办事项应用是我们管理任务和时间的好帮手。今天,我们将用Python实现一个简单的命令行待办事项应用。这个应用将支持添加任务、删除任务、查看任务列表和标记任务为已完成的功能。通过这个项目,你可以学习到如何处理用户输入、操作文件以及实现基本的功能逻辑。

一、项目需求

我们的待办事项应用需要实现以下功能:

  1. 添加任务:用户可以输入任务内容并将其添加到任务列表中。

  2. 查看任务列表:用户可以查看所有任务,包括已完成的任务。

  3. 删除任务:用户可以通过任务编号删除某个任务。

  4. 标记任务为已完成:用户可以将某个任务标记为已完成。

  5. 持久化存储:任务列表需要保存到文件中,以便在程序重新启动时恢复。

二、项目实现

1. 数据结构设计

我们需要一个数据结构来存储任务列表。每个任务可以是一个字典,包含以下字段:

  • id:任务的唯一标识符。

  • description:任务的描述。

  • completed:布尔值,表示任务是否已完成。

任务列表可以是一个列表,存储所有任务的字典。

2. 文件存储

我们将使用JSON格式将任务列表保存到文件中。JSON是一种轻量级的数据交换格式,非常适合用于存储和读取任务数据。

3. 功能实现

以下是完整的代码实现:

Python复制

import json
import os

# 定义任务文件路径
TASK_FILE = "tasks.json"

# 加载任务列表
def load_tasks():
    if os.path.exists(TASK_FILE):
        with open(TASK_FILE, "r") as file:
            return json.load(file)
    return []

# 保存任务列表
def save_tasks(tasks):
    with open(TASK_FILE, "w") as file:
        json.dump(tasks, file, indent=4)

# 添加任务
def add_task(description):
    tasks = load_tasks()
    task_id = len(tasks) + 1
    tasks.append({"id": task_id, "description": description, "completed": False})
    save_tasks(tasks)
    print(f"Task added: {description}")

# 查看任务列表
def view_tasks():
    tasks = load_tasks()
    if not tasks:
        print("No tasks found.")
        return
    for task in tasks:
        status = "Done" if task["completed"] else "Pending"
        print(f"{task['id']}. [{status}] {task['description']}")

# 删除任务
def delete_task(task_id):
    tasks = load_tasks()
    tasks = [task for task in tasks if task["id"] != task_id]
    save_tasks(tasks)
    print(f"Task with ID {task_id} deleted.")

# 标记任务为已完成
def complete_task(task_id):
    tasks = load_tasks()
    for task in tasks:
        if task["id"] == task_id:
            task["completed"] = True
            break
    save_tasks(tasks)
    print(f"Task with ID {task_id} marked as completed.")

# 主函数
def main():
    while True:
        print("\nTodo App")
        print("1. Add Task")
        print("2. View Tasks")
        print("3. Delete Task")
        print("4. Complete Task")
        print("5. Exit")
        choice = input("Enter your choice: ")

        if choice == "1":
            description = input("Enter task description: ")
            add_task(description)
        elif choice == "2":
            view_tasks()
        elif choice == "3":
            task_id = int(input("Enter task ID to delete: "))
            delete_task(task_id)
        elif choice == "4":
            task_id = int(input("Enter task ID to mark as completed: "))
            complete_task(task_id)
        elif choice == "5":
            print("Exiting...")
            break
        else:
            print("Invalid choice. Please try again.")

if __name__ == "__main__":
    main()

4. 代码解析

数据存储
  • 使用json模块将任务列表保存到文件中。每次程序启动时,从文件加载任务列表。

  • 如果文件不存在,则初始化一个空的任务列表。

功能实现
  • 添加任务:为每个任务生成唯一的id,并将其添加到任务列表中。

  • 查看任务列表:遍历任务列表,显示每个任务的状态和描述。

  • 删除任务:通过任务id从任务列表中移除任务。

  • 标记任务为已完成:通过任务id查找任务并将其completed字段设置为True

用户交互
  • 使用input()函数获取用户输入。

  • 提供一个简单的菜单,让用户选择操作。

三、运行和测试

  1. 将代码保存为todo_app.py

  2. 在命令行中运行程序:

    bash复制

    python todo_app.py
  3. 按照菜单提示操作,添加任务、查看任务列表、删除任务和标记任务为已完成。

四、扩展功能

  1. 任务优先级:为每个任务添加优先级字段,并在查看任务时按优先级排序。

  2. 任务分类:支持为任务添加分类标签,便于管理不同类型的任务。

  3. 定时提醒:结合datetime模块,为任务设置提醒时间,并在到期时提醒用户。

  4. 图形界面:使用tkinter或其他GUI库为应用添加图形界面。

五、总结

通过这个简单的命令行待办事项应用,我们学习了如何处理用户输入、操作文件以及实现基本的功能逻辑。这个项目不仅可以帮助你巩固Python编程的基础知识,还可以扩展到更复杂的任务管理系统。希望你喜欢这个项目,并在实践中不断探索和学习!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值