Python有趣又使用的迷你项目-TODO列表管理器

TODO列表管理器

  • 创建一个简单的命令行TODO列表管理器,允许用户添加、删除和查看待办事项。
  • 使用Python的文件操作来保存和加载数据

"""
下面是一个简单的命令行TODO列表管理器的Python脚本示例。这个脚本使用了文件操作来保存和加载数据。

首先,创建一个名为todo.txt的文件来存储待办事项。每个待办事项占据一行。

然后,你可以使用以下Python脚本来管理这个TODO列表
"""

import os
import string
#展示菜单
def display_menu():
    print("""
    TODO List Manager
    1.Add a todo
    2.Delete a todo
    3.View todos
    4.Exit
    """)
"""
这个脚本定义了几个函数来分别实现添加、删除、查看待办事项以及保存和加载待办事项列表的功能。
主函数main使用一个无限循环来显示菜单并根据用户的输入调用相应的函数。当用户选择退出时,循环结束。
"""
#添加代办事项函数,传入
def add_todo(todos):
    todo = input("Enter a new todo: ")
    todos.append(todo)
    # 保存代办事项函数,未定义,后面定义
    save_todos(todos)
    print("Todo added successfully!")
# 删除代办事项
def delete_todo(todos):
    if not todos:
        print("No todos to delete!")
        return
    # 索引
    todo_index = int(input("Enter the index of the todo to delete: ")) - 1
    if todo_index < 0 or todo_index >=len(todos):
        print("Invalid index!")
        return
    del todos[todo_index]
    # 保存代办事项函数,未定义,后面定义
    save_todos(todos)
    print("Todo deleted successfully!")
#查看待办事项
def view_todos(todos):
    if not todos:
        print("No todos to view!")
        return
    """
    enumerate 是 Python 的内置函数,用于将一个可遍历的数据对象(如列表、元组或字符串)
    组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
    """
    for index, todo in enumerate(todos, 1):
        print(f"{index}. {todo}")
#保存待办事项列表
def save_todos(todos):
    """路径字符串中的 \ 是一个转义字符的开始
    1.需要使用原始字符串 (r"tasks\todo.txt")来避免转义字符
    2.你可以使用正斜杠(/),它在Python中也被视为有效的路径分隔符,并且不会引发转义字符的问题("tasks/todo.txt")。"""
    with open(r"tasks\todo.txt", 'a') as file:
        for todo in todos:
            file.write(f"{todo}\n")

#加载待办事项列表
def load_todos():
    if not os.path.exists(r"tasks\todo.txt"):
        return []
    with open(r"tasks\todo.txt", "r") as file:
        todos = file.readlines()
    return [todo.strip() for todo in todos]

def main():
    todos = load_todos()
    print(todos)
    while True:
        display_menu()
        choice = input("Enter your choice (1-4): ")
        if choice == "1":
            add_todo(todos)
        elif choice == "2":
            delete_todo(todos)
        elif choice == "3":
            view_todos(todos)
        elif choice == "4":
            print("Exiting...")
            break
        else:
            print("Invalid choice! Please try again.")

#使用 if __name__ == "__main__": 语句的目的是让代码块仅在模块作为主程序运行时执行,而不是在模块被导入时执行。
if __name__ == "__main__":
    main() 
       

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值