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)不仅是一个练习,更是一种习惯的养成。当你能用代码解决生活中的小问题,编程就不再是冰冷的语法,而是你手中真正能用的工具。
希望这篇文章能帮你迈出第一步。动手试试吧,写完第一行代码的那一刻,你就已经走在成为程序员的路上了。