Pendahuluan
Selamat datang di artikel terakhir dari seri pembangunan aplikasi CLI Expense Tracker! Pada artikel sebelumnya, kita telah berhasil membedah cara menggunakan function untuk membuat kode yang modular, rapi, dan dapat digunakan kembali (reusable). Kita sudah punya “batu bata” yang kuat untuk aplikasi kita, namun sebuah aplikasi tidak akan terasa “hidup” jika hanya menjalankan instruksi secara linear dari atas ke bawah.
Bayangkan jika aplikasi pencatat pengeluaran Anda hanya bisa mencatat angka tanpa bisa memberikan peringatan saat pengeluaran Anda meledak melewati budget bulanan. Atau, bagaimana jika aplikasi tidak bisa membedakan antara transaksi yang masuk kategori “Kebutuhan Pokok” dengan “Hiburan”? Di sinilah kita membutuhkan Control Flow, khususnya struktur percabangan atau conditional statements.
Dalam tutorial ini, kita akan mempelajari cara menggunakan logika if, elif, dan else di Python. Kita akan belajar bagaimana membuat keputusan berdasarkan data, menggunakan operator logika untuk kondisi yang kompleks, hingga menerapkan validasi input. Di akhir artikel ini, kita akan mengintegrasikan logika tersebut ke dalam proyek CLI Expense Tracker kita, sehingga aplikasi Anda bukan sekadar buku catatan digital, melainkan asisten finansial yang mampu memberikan peringatan cerdas.
Dasar Struktur Percabangan: if, elif, dan else
Dalam pemrograman, conditional statement memungkinkan kita untuk mengeksekusi blok kode tertentu hanya jika sebuah kondisi bernilai True. Di Python, struktur ini sangat terbaca karena kemiripannya dengan bahasa Inggris manusia.
Struktur dasarnya terdiri dari:
if: Mengevaluasi kondisi pertama.elif(else if): Mengevaluasi kondisi tambahan jika kondisi sebelumnya bernilaiFalse.else: Blok eksekusi terakhir jika semua kondisi di atas tidak ada yang terpenuhi.
Mari kita lihat contoh sederhana. Bayangkan Budi sedang mengecek apakah pengeluaran makan siangnya hari ini termasuk kategori “Hemat” atau “Boros”.
# Contoh pengecekan pengeluaran sederhana
pengeluaran_makan = 75000 # Dalam Rupiah
if pengelulan_makan <= 30000:
print("Status: Hemat. Kamu bisa menabung lebih banyak!")
elif pengeluahan_makan <= 50000:
print("Status: Standar. Masih dalam batas wajar.")
else:
print("Status: Boros! Hati-hati dengan pengeluaran makanmu.")
# Output: Status: Boros! Hati-hati dengan pengeluaran makanmu.
Pada kode di atas, karena 75000 tidak lebih kecil dari 30000 dan tidak lebih kecil dari 50000, maka Python secara otomatis menjalankan blok else. Hal ini sangat krusial dalam aplikasi finansial untuk memberikan klasifikasi otomatis pada setiap transaksi yang diinput oleh pengguna.
Menggunakan Operator Logika untuk Kondisi Kompleks
Dalam dunia nyata, sebuah keputusan jarang hanya didasarkan pada satu variabel. Seringkali, kita perlu mengecek beberapa hal sekaligus. Di sinilah kita menggunakan Logical Operators: and, or, dan not.
and: MenghasilkanTruehanya jika semua kondisi terpenuhi.or: MenghasilkanTruejika salah satu kondisi terpenuhi.not: Membalikkan nilai logika (dariTruemenjadiFalsedan sebaliknya).
Mari kita terapkan pada skenario Siti yang ingin memantau pengeluaran di platform seperti Tokopedia atau Gojek. Siti ingin mendapatkan peringatan jika pengeluaran di kategori “Hiburan” melebilan budget DAN jumlahnya di atas Rp 500.000.
# Skenario pemantauan budget Siti
kategori = "Hiburan"
jumlah_transaksi = 600000
budget_limit_hiburan = 500000
# Mengecek kondisi menggunakan operator 'and'
if kategori == "Hiburan" and jumlah_transaksi > budget_limit_hiburan:
print("⚠️ PERINGATAN: Pengeluaran Hiburan Anda melebihi budget!")
elif kategori == "Kebutuhan" and jumlah_transaksi > 1000000:
print("⚠️ PERINGATAN: Pengeluaran Kebutuhan Anda sangat besar!")
else:
print("✅ Transaksi aman, tetap pantau pengeluaran Anda.")
# Output: ⚠️ PERINGATAN: Pengeluaran Hiburan Anda melebihi budget!
Dengan menggunakan and, kita membuat logika yang lebih spesifik. Aplikasi tidak akan berteriak “Peringatan!” hanya karena pengeluaran besar, tetapi hanya jika pengeluaran tersebut terjadi pada kategori yang kita tentukan.
Membership Operators: Mengecek Keberadaan Data
Sebagai developer, kita sering berurusan dengan daftar (list) kategori yang diizinkan. Kita tidak ingin pengguna memasukkan kategori asal-asalan seperti “Jajan Sembarangan” jika kita hanya mendukung kategori “Makan”, “Transportasi”, dan “Belanja”.
Python menyediakan operator in yang sangat powerful untuk mengecek apakah sebuah nilai ada di dalam sebuah koleksi (seperti list atau tuple).
# Daftar kategori yang valid dalam aplikasi kita
kategori_valid = ["Makan", "Transportasi", "Belanja", "Tagihan", "Hiburan"]
# Input dari pengguna (simulasi)
input_user = "Jajan"
if input_user in kategori_valid:
print(f"Kategori '{input_user}' berhasil ditambahkan.")
else:
print(f"❌ Error: Kategori '{input_user}' tidak terdaftar. Silakan gunakan kategori yang tersedia.")
# Output: ❌ Error: Kategori 'Jajan' tidak terdaftar. Silakan gunakan kategori yang tersedia.
Penggunaan in membuat kode kita jauh lebih bersih dibandingkan jika kita harus menulis if input_user == "Makan" or input_user == "Transportasi" or ... secara manual. Ini adalah teknik yang sangat penting untuk menjaga validasi data pada aplikasi CLI kita.
Implementasi dalam Proyek: CLI Expense Tracker
Sekarang, mari kita satukan semua ilmu yang telah kita pelajari ke dalam proyek utama kita. Kita akan memodifikasi fungsi penambahan pengeluaran agar memiliki logika pengecekan budget dan validasi kategori.
Berikut adalah potongan kode implementasi pada bagian inti aplikasi kita:
# Proyek: CLI Expense Tracker - Tahap Final
# Mengintegrasikan Logika Percabangan
def add_expense(expenses, budget_limit):
print("\n--- Tambah Pengeluaran Baru ---")
# 1. Validasi Kategori menggunakan Membership Operator
valid_categories = ["Makan", "Transportasi", "Belanja", "Tagihan", "Hiburan"]
category = input("Masukkan kategori (Makan/Transportasi/Belanja/Tagihan/Hiburan): ").capitalize()
if category not in valid_categories:
print(f"❌ Gagal: Kategori '{category}' tidak valid!")
return
# 2. Input Jumlah Pengeluaran
try:
amount = float(input("Masukkan jumlah nominal (Rp): "))
except ValueError:
print("❌ Error: Masukkan angka yang valid!")
return
# 3. Logika Pengecekan Budget menggunakan Conditional
# Kita hitung total pengeluaran saat ini
total_saat_ini = sum(item['amount'] for item in expenses)
# Tambahkan nominal baru ke perhitungan sementara
total_rencana = total_saat_ini + amount
# Simpan data ke list
expenses.append({"category": category, "amount": amount})
# 4. Output Feedback berdasarkan kondisi budget
print(f"\n✅ Berhasil mencatat: Rp {amount:,.2f} ({category})")
if total_rencana > budget_limit:
print(f"⚠️ PERINGATAN: Total pengeluaran Anda (Rp {total_rencana:,.2f}) telah MELEBIHI budget bulanan (Rp {budget_limit:,.2f})!")
else:
print(f"💰 Sisa budget Anda: Rp {budget_limit - total_rencana:,.2f}")
# Inisialisasi Data
my_expenses = []
monthly_budget = 2000000 # Contoh budget 2 Juta
# Simulasi penggunaan
add_expense(my_expenses, monthly_budget)
add_expense(my_expenses, monthly_budget)
Dalam kode di atas, kita telah menerapkan:
- Validasi Input: Menggunakan
try-exceptuntuk mencegah error jika user memasukkan huruf saat diminta angka. - Validasi Kategori: Menggunakan
if category not in valid_categoriesuntuk memastikan data bersih. - Logika Bisnis: Menggunakan
if total_rencana > budget_limituntuk memberikan peringatan otomatis kepada pengguna jika mereka mulai boros.
Kesimpulan
Kita telah belajar bahwa if-else bukan sekadar percabangan logika, melasi merupakan “otak” yang membuat aplikasi kita menjadi cerdas. Dengan menggabkan if-else dengan operator logika (and, or) dan operator keanggotaan (in), kita dapat membangun sistem validasi yang kuat dan fitur peringatan yang bermanfaat bagi pengguna.
Selamat, Anda telah berhasil membangun logika inti dari sebuah aplikasi manajemen keuangan!