Skip to main content

Ngày 27 – Python hằng ngày: Ứng dụng To-Do List bằng Python (hoàn thiện chức năng cơ bản)

· 3 min read

🎯 Mục tiêu

  • Tạo một ứng dụng quản lý công việc đơn giản với giao diện dòng lệnh.
  • Cho phép người dùng thêm, xem, đánh dấu hoàn thành và xóa công việc.

📚 Kiến thức sử dụng

  • List và Dictionary trong Python
  • Hàm và tham số
  • Vòng lặp while, if, elif, else
  • Xử lý input từ người dùng

🧱 Cấu trúc dữ liệu

tasks = [
{
"title": "Học Python",
"completed": False
}
]

🛠 Mã nguồn đầy đủ

tasks = []

def display_menu():
print("\n----- MENU TO-DO LIST -----")
print("1. Thêm công việc mới")
print("2. Xem danh sách công việc")
print("3. Đánh dấu công việc đã hoàn thành")
print("4. Xóa công việc")
print("5. Thoát chương trình")
print("---------------------------")

def addTask(tasks_list):
print("\n>> Thêm công việc mới <<")
title = input("Nhập tên công việc: ").strip()
if title:
task = {"title": title, "completed": False}
tasks_list.append(task)
print("✅ Đã thêm công việc!")
else:
print("❌ Tên công việc không được để trống.")

def viewTasks(tasks_list):
print("\n>> Danh sách công việc <<")
if not tasks_list:
print("Danh sách trống.")
else:
for i, task in enumerate(tasks_list, 1):
status = "✅" if task["completed"] else "❌"
print(f"{i}. {task['title']} [{status}]")

def markComplete(tasks_list):
print("\n>> Đánh dấu hoàn thành <<")
if not tasks_list:
print("Danh sách trống.")
return
viewTasks(tasks_list)
try:
index = int(input("Nhập số thứ tự công việc đã hoàn thành: "))
if 1 <= index <= len(tasks_list):
tasks_list[index - 1]["completed"] = True
print("🎉 Đã đánh dấu hoàn thành.")
else:
print("❌ Số thứ tự không hợp lệ.")
except ValueError:
print("❌ Vui lòng nhập một số.")

def deleteTask(tasks_list):
print("\n>> Xóa công việc <<")
if not tasks_list:
print("Danh sách trống.")
return
viewTasks(tasks_list)
try:
index = int(input("Nhập số thứ tự công việc muốn xóa: "))
if 1 <= index <= len(tasks_list):
deleted = tasks_list.pop(index - 1)
print(f"🗑️ Đã xóa công việc: {deleted['title']}")
else:
print("❌ Số thứ tự không hợp lệ.")
except ValueError:
print("❌ Vui lòng nhập một số.")

def main():
while True:
display_menu()
choice = input("Nhập lựa chọn của bạn (1-5): ").strip()

if choice == '1':
addTask(tasks)
elif choice == '2':
viewTasks(tasks)
elif choice == '3':
markComplete(tasks)
elif choice == '4':
deleteTask(tasks)
elif choice == '5':
print("👋 Cảm ơn bạn đã sử dụng chương trình. Tạm biệt!")
break
else:
print("❌ Lựa chọn không hợp lệ. Nhập số từ 1 đến 5.")

if __name__ == "__main__":
main()

🎥 Xem Video Hướng Dẫn

💡 Mẹo nâng cao (gợi ý cho ngày sau):

Lưu danh sách công việc vào file .json để sử dụng lại sau khi thoát.

Thêm thời gian tạo và deadline cho công việc (sử dụng datetime).

Sắp xếp danh sách theo deadline hoặc trạng thái.

✍️ Thực hành: Chạy chương trình, thêm 2–3 công việc, đánh dấu hoàn thành và xóa thử 1 công việc.