📝 Mini Project: To-Do List CLI

Level: Intermediate

Setelah mempelajari struktur data, modularisasi, error handling, dan OOP dasar, saatnya kita gabungkan konsep-konsep tersebut dalam sebuah aplikasi To-Do List sederhana berbasis CLI.

📖 Deskripsi Proyek

Aplikasi ini memungkinkan pengguna untuk:

🛠️ Implementasi

# To-Do List CLI sederhana

tugas = []

def tampilkan_menu():
    print("\n=== To-Do List ===")
    print("1. Lihat daftar tugas")
    print("2. Tambah tugas")
    print("3. Tandai selesai")
    print("4. Hapus tugas")
    print("5. Keluar")

def lihat_tugas():
    if not tugas:
        print("Belum ada tugas.")
    else:
        for i, t in enumerate(tugas, start=1):
            status = "✅" if t["selesai"] else "❌"
            print(f"{i}. {t['nama']} [{status}]")

def tambah_tugas():
    nama = input("Masukkan nama tugas: ")
    tugas.append({"nama": nama, "selesai": False})
    print("Tugas ditambahkan!")

def tandai_selesai():
    lihat_tugas()
    try:
        idx = int(input("Nomor tugas yang selesai: ")) - 1
        tugas[idx]["selesai"] = True
        print("Tugas ditandai selesai!")
    except (ValueError, IndexError):
        print("Nomor tidak valid.")

def hapus_tugas():
    lihat_tugas()
    try:
        idx = int(input("Nomor tugas yang dihapus: ")) - 1
        tugas.pop(idx)
        print("Tugas dihapus!")
    except (ValueError, IndexError):
        print("Nomor tidak valid.")

# Main loop
while True:
    tampilkan_menu()
    pilihan = input("Pilih menu: ")
    if pilihan == "1":
        lihat_tugas()
    elif pilihan == "2":
        tambah_tugas()
    elif pilihan == "3":
        tandai_selesai()
    elif pilihan == "4":
        hapus_tugas()
    elif pilihan == "5":
        print("Terima kasih sudah menggunakan To-Do List!")
        break
    else:
        print("Pilihan tidak valid.")

👉 Program ini menggabungkan list, dictionary, fungsi, input-output, dan error handling sederhana.

🎮 Mini Challenge

Kembangkan aplikasi To-Do List ini dengan fitur tambahan: