Python 创建一个简单的任务清单(to-do list)(保姆级教程)

Python 创建一个简单的任务清单(to-do list)

你有没有过这样的经历:明明脑子里记着一堆待办事项,一到执行就忘得一干二净?别急,今天咱们就用 Python 来亲手打造一个属于自己的任务清单工具。这不只是一段代码,更是一个能帮你理清思路、提升效率的小助手。

Python 语言简洁明了,非常适合初学者入门,同时也能满足中级开发者对逻辑结构的深入控制。我们不会用复杂的框架,也不依赖外部数据库,全程用纯 Python 实现一个控制台版的 to-do list。整个过程就像搭积木,每一步都清晰可见,学完就能立刻上手使用。


项目目标与功能规划

我们要实现的这个任务清单,核心功能包括:

  • 添加新任务
  • 查看所有任务
  • 标记任务为已完成
  • 删除任务
  • 退出程序

这些功能虽然基础,但覆盖了日常使用中最常见的需求。想象一下,你每天早上打开这个程序,就像打开一个数字待办本,把今天要做的事一条条列出来,完成一项就打个勾,是不是特别有成就感?

我们把任务存储在一个列表(list)中,每个任务是一个字典对象,包含任务名称和完成状态。这样结构清晰,便于后续扩展。


创建数组与初始化

在 Python 中,列表(list)就像一个可变的盒子,可以随时往里面放东西,也能随时拿出来。我们先来创建一个空的任务列表:

tasks = []

这里 tasks 是变量名,你可以理解为“任务”这个容器。初始为空,意味着程序刚启动时没有任何任务。

接下来,我们可以添加第一个任务。比如想写一个“写博客文章”的任务:

task = {
    "name": "写博客文章",
    "completed": False  # 初始状态为未完成
}

tasks.append(task)

这里的 append() 方法就像往盒子里扔东西,把一个任务对象放进 tasks 列表里。每个任务都包含两个关键信息:name(任务名称)和 completed(完成状态),布尔值 False 表示还没完成。


实现任务添加功能

现在我们把“添加任务”功能封装成一个函数,让它更灵活。函数就像是一个工具包,你只需要告诉它“要加什么”,它就自动完成操作。

def add_task():
    # 提示用户输入任务名称
    task_name = input("请输入新任务的名称:")
    
    # 创建任务字典,初始状态为未完成
    new_task = {
        "name": task_name,
        "completed": False
    }
    
    # 将新任务添加到任务列表
    tasks.append(new_task)
    
    # 友好提示添加成功
    print(f"✅ 已添加任务:{task_name}")

这个函数里有几个关键点:

  • input() 用于获取用户输入,程序会暂停等待你打字。
  • f-string(f 字符串)动态插入变量值,让输出更生动。
  • tasks.append() 把新任务加进去,整个过程就像往抽屉里放文件。

调用方式很简单:add_task(),运行后就会提示你输入任务名。


查看与管理任务列表

查看所有任务是日常最频繁的操作。我们写一个函数来展示当前的所有任务:

def view_tasks():
    # 检查是否有任务
    if not tasks:
        print("📭 暂无任务,请添加新任务。")
        return  # 退出函数,不再往下执行
    
    # 打印标题
    print("\n📋 当前任务列表:")
    
    # 遍历任务列表,逐个显示
    for index, task in enumerate(tasks, start=1):
        # 根据完成状态显示不同的符号
        status = "✅" if task["completed"] else "⬜"
        print(f"{index}. {status} {task['name']}")

重点说明:

  • enumerate(tasks, start=1) 是一个好用的技巧,它会一边遍历列表,一边给每个任务编号(从 1 开始)。
  • task["completed"] 读取任务的完成状态,用三元表达式判断是否显示 ✅ 或 ⬜。
  • if not tasks 检查列表是否为空,避免空列表报错。

运行 view_tasks(),你会看到类似这样的输出:

📋 当前任务列表:
1. ⬜ 写博客文章
2. ✅ 完成 Python 练习

标记任务完成与删除任务

现在我们来实现两个核心操作:标记完成和删除。

标记任务为已完成

def mark_task_completed():
    # 先显示任务列表
    view_tasks()
    
    # 检查是否有任务
    if not tasks:
        return
    
    try:
        # 获取用户选择的任务编号
        task_number = int(input("请输入要标记为完成的任务编号:"))
        
        # 检查编号是否有效(在范围内)
        if 1 <= task_number <= len(tasks):
            # 更新对应任务的完成状态
            tasks[task_number - 1]["completed"] = True
            print(f"🎉 任务 {task_number} 已标记为完成!")
        else:
            print("❌ 无效的编号,请输入正确的任务编号。")
            
    except ValueError:
        print("❌ 请输入一个有效的数字。")

这里有个小技巧:tasks[task_number - 1],因为列表索引从 0 开始,而用户从 1 开始数,所以要减 1。

删除任务

def delete_task():
    # 先显示任务列表
    view_tasks()
    
    # 检查是否有任务
    if not tasks:
        return
    
    try:
        # 获取要删除的任务编号
        task_number = int(input("请输入要删除的任务编号:"))
        
        # 检查编号范围
        if 1 <= task_number <= len(tasks):
            # 删除任务(用 pop 方法)
            removed_task = tasks.pop(task_number - 1)
            print(f"🗑️ 已删除任务:{removed_task['name']}")
        else:
            print("❌ 无效的编号,请输入正确的任务编号。")
            
    except ValueError:
        print("❌ 请输入一个有效的数字。")

pop() 方法不仅能取出元素,还能直接从列表中删除它,相当于“抽走一张纸条”。


主程序循环与用户交互

最后,我们需要一个主循环,让程序持续运行,直到用户选择退出。

def main():
    print("🎯 欢迎使用 Python 任务清单程序!")
    
    while True:
        # 显示菜单选项
        print("\n" + "="*40)
        print("1. 添加任务")
        print("2. 查看任务")
        print("3. 标记任务为完成")
        print("4. 删除任务")
        print("5. 退出程序")
        print("="*40)
        
        # 获取用户选择
        choice = input("请选择操作(1-5):").strip()
        
        # 根据选择调用对应函数
        if choice == "1":
            add_task()
        elif choice == "2":
            view_tasks()
        elif choice == "3":
            mark_task_completed()
        elif choice == "4":
            delete_task()
        elif choice == "5":
            print("👋 感谢使用,再见!")
            break  # 退出循环
        else:
            print("❌ 无效选择,请输入 1-5 之间的数字。")

这个 main() 函数就是整个程序的“大脑”。它用 while True 创建了一个无限循环,只要用户没选择退出,程序就一直运行。

  • strip() 去掉输入前后空格,防止误判。
  • if-elif 语句像开关,决定走哪条路。
  • break 是退出循环的钥匙,只有用户选 5 时才执行。

总结与扩展建议

通过以上步骤,我们已经成功用 Python 创建了一个完整的任务清单程序。整个过程没有依赖任何第三方库,全部基于 Python 内置数据结构和控制语句,非常适合学习和实践。

这个项目虽然简单,但背后蕴含了编程的核心思想:数据结构 + 逻辑控制 + 用户交互。你学会的不只是“怎么写代码”,更是“怎么思考问题”。

如果你还想进一步提升,可以尝试以下扩展:

  • 将任务保存到文件(如 tasks.json),实现数据持久化
  • 使用 datetime 模块为任务添加截止时间
  • 增加任务分类(工作、学习、生活等)
  • 支持模糊搜索任务名称

这些都能让你的 to-do list 更智能、更实用。

Python 创建一个简单的任务清单(to-do list)不仅是一个练习,更是一种习惯的养成。当你能用代码解决生活中的小问题,编程就不再是冰冷的语法,而是你手中真正能用的工具。

希望这篇文章能帮你迈出第一步。动手试试吧,写完第一行代码的那一刻,你就已经走在成为程序员的路上了。