Operator dan Percabangan
Operator aritmatika, perbandingan, logika, plus if/elif/else untuk pengambilan keputusan.
Operator dan kondisi: wasit dalam program
Analogi: bayangkan penjaga gerbang tol. Setiap mobil yang datang dicek: "saldo cukup? ya, lewat jalur A; tidak, lewat jalur B". Program melakukan hal yang sama jutaan kali: mengecek kondisi, lalu memilih jalur. Operator adalah alat ukurnya (lebih besar? sama dengan?), dan if/elif/else adalah gerbangnya.
Kenapa konsep ini ada? Karena program yang hanya jalan lurus (atas ke bawah, tanpa belok) tidak bisa merespons dunia nyata. Diskon hanya untuk belanja di atas Rp100 ribu, status "lulus" hanya untuk nilai di atas 75, segmen "Platinum" hanya untuk pelanggan besar. Semua aturan bisnis pada dasarnya adalah kondisi, dan hampir semua analisis data adalah penerapan kondisi ke banyak baris sekaligus.
Contoh 1: operator aritmatika dan perbandingan (super sederhana)
a, b = 10, 3
print(a + b) # 13, tambah
print(a - b) # 7, kurang
print(a * b) # 30, kali
print(a / b) # 3.333..., bagi (hasilnya selalu float)
print(a // b) # 3, bagi bulat (floor, dibulatkan ke bawah)
print(a % b) # 1, sisa bagi (modulo)
print(a ** b) # 1000, pangkatTiga yang paling sering dipakai analyst: / untuk rata-rata dan rasio, % untuk pola berulang (misalnya n % 2 == 0 artinya n genap, berguna untuk sampling), dan // untuk pengelompokan (misalnya membagi data jadi batch berisi 100 baris).
Lalu operator perbandingan, yang hasilnya selalu True atau False:
print(5 == 5) # True, sama dengan (DUA tanda =)
print(5 != 3) # True, tidak sama dengan
print(7 > 5) # True
print(3 <= 2) # FalseDan operator logika untuk menggabungkan kondisi:
umur = 20
punya_ktp = True
print(umur >= 17 and punya_ktp) # True, keduanya harus benar
print(umur < 17 or punya_ktp) # True, salah satu cukup
print(not punya_ktp) # False, kebalikanCara membaca and/or seperti bahasa sehari-hari: "umur minimal 17 DAN punya KTP". Kalau diterjemahkan ke kalimat Indonesia terdengar aneh, kondisi itu mungkin perlu ditulis ulang.
Catatan teknis: Satu tanda
=itu assignment (menyimpan nilai), dua tanda==itu perbandingan (mengecek kesamaan). Tertukar keduanya adalah bug pemula paling umum di semua bahasa pemrograman, bukan cuma Python.
Contoh 2: segmentasi pelanggan (lebih nyata)
Inilah versi mini pekerjaan analyst: mengelompokkan pelanggan berdasarkan total belanja. Pola if/elif/else seperti inilah yang nanti dipakai untuk memberi label ribuan baris data.
# Data satu pelanggan
nama = "Budi"
total_belanja = 750000
jumlah_transaksi = 12
# Tentukan segmen berdasarkan total belanja
if total_belanja >= 1000000:
segmen = "Platinum"
elif total_belanja >= 500000:
segmen = "Gold"
elif total_belanja >= 100000:
segmen = "Silver"
else:
segmen = "Bronze"
# Bonus: pelanggan setia dapat sapaan khusus
if jumlah_transaksi >= 10 and segmen in ("Gold", "Platinum"):
sapaan = "terima kasih pelanggan setia"
else:
sapaan = "terima kasih sudah berbelanja"
print(nama, "masuk segmen", segmen + ",", sapaan)Dua hal penting di sini. Pertama, Python mengecek kondisi dari atas ke bawah dan berhenti di yang pertama benar, jadi urutan itu krusial: batas tertinggi harus di atas. Kedua, kondisi bisa digabung dengan and dan memakai in untuk mengecek keanggotaan dalam grup, pola yang sangat analyst.
Catatan teknis: Python mendukung chained comparison yang elegan:
if 500000 <= total_belanja < 1000000:artinya "di antara 500 ribu dan 1 juta". Di banyak bahasa lain kamu harus menulistotal >= 500000 and total < 1000000; di Python cukup satu baris yang terbaca seperti matematika.
Kesalahan umum pemula
SALAH: Memakai = (assignment) di dalam kondisi.
nilai = 82
if nilai = 90: # SyntaxError
print("A")BENAR: Perbandingan memakai ==:
if nilai == 90:
print("A")SALAH: Menulis kondisi ganda seperti bahasa sehari-hari.
if nilai > 75 and < 90: # SyntaxError
print("B")BENAR: Ulangi variabelnya, atau pakai chained comparison:
if nilai > 75 and nilai < 90:
print("B")
# atau lebih Pythonic:
if 75 < nilai < 90:
print("B")SALAH: Urutan elif dari batas terkecil, sehingga kondisi besar tidak pernah tercapai.
if total >= 100000: # 750000 lolos di sini...
segmen = "Silver"
elif total >= 500000: # ...baris ini tidak pernah dicek
segmen = "Gold"BENAR: Selalu urutkan dari batas tertinggi ke terendah:
if total >= 500000:
segmen = "Gold"
elif total >= 100000:
segmen = "Silver"SALAH: Lupa titik dua atau indentasi tidak konsisten.
if nilai >= 75
print("lulus")
print("selesai") # IndentationError: kedalaman bedaBENAR:
if nilai >= 75:
print("lulus")
print("selesai") # 4 spasi konsisten, di luar blokTantangan
Klasifikasi suhu
Buat variabel suhu (mis. 32). Dengan if/elif/else, cetak: "Panas" jika >= 30, "Hangat" jika >= 25, "Sejuk" jika >= 20, dan "Dingin" jika di bawahnya. Coba ganti nilai suhu dan lihat hasilnya berubah.