Boolean dan Logika di Python
Kuasai and, or, dan not lewat analogi saklar lampu, lalu pakai untuk memfilter data seperti analis data sungguhan.
Analogi: saklar lampu di kamar
Bayangkan lampu kamarmu punya dua saklar, satu di pintu dan satu di dekat kasur. Kamu ingin lampu menyala hanya kalau keduanya ON. Itu namanya logika and: semua syarat harus benar.
Sekarang bayangkan lampu koridor yang bisa dinyalakan dari dua ujung. Lampu menyala kalau salah satu saklar ON. Itu logika or: cukup satu yang benar.
Terakhir, bayangkan saklar "jangan ganggu" di pintu kos. Kalau saklar ON, bel tidak berbunyi. Itu logika not: membalik keadaan, benar jadi salah, salah jadi benar.
Tiga kata kecil ini, and, or, dan not, adalah bahan baku hampir semua keputusan di program Python.
Kenapa konsep ini ada?
Komputer pada dasarnya hanya mengerti dua hal: ya atau tidak, 1 atau 0. Setiap pertanyaan yang kamu ajukan ke program, "apakah data ini valid?", "apakah umur ini cukup?", "apakah kolom ini kosong?", jawabannya selalu boolean: True atau False.
Operator logika ada supaya kamu bisa menggabungkan pertanyaan-pertanyaan kecil itu menjadi satu keputusan yang lebih pintar. Tanpa and/or/not, kamu harus menulis if bertingkat yang panjang dan susah dibaca. Dengan mereka, satu baris if bisa mengekspresikan aturan bisnis yang kompleks, seperti syarat diskon toko atau aturan filter data yang kotor.
Tiga operator dan tabel kebenarannya
# and: True hanya kalau KEDUANYA True
print(True and True) # True
print(True and False) # False
print(False and True) # False
print(False and False) # False
# or: True kalau SALAH SATU True
print(True or False) # True
print(False or False) # False
# not: membalik nilai
print(not True) # False
print(not False) # TrueCatatan teknis: Python mengevaluasi boolean dengan short-circuit. Pada
A and B, kalauAsudah False,Btidak dicek lagi. PadaA or B, kalauAsudah True,Bdilewati. Ini berguna untuk menghindari error, misalnyaif data and data[0] > 10:.
Contoh 1: syarat sederhana
Selain dipakai langsung di if, hasil boolean bisa disimpan dulu ke variabel supaya kondisi yang panjang tetap gampang dibaca dan gampang dites ulang:
umur = 20
punya_ktp = True
# and: dua-duanya harus True
boleh_masuk = umur >= 17 and punya_ktp
print(boleh_masuk) # True
# or: cukup satu yang True
dapat_diskon = umur < 12 or umur > 60
print(dapat_diskon) # False
# not: membalik
print(not punya_ktp) # FalseContoh 2: boolean untuk filter data
Di dunia data, boolean dipakai untuk memfilter baris. Anggap kamu membersihkan data pelanggan dan hanya ingin yang emailnya valid DAN umurnya di atas 17 tahun:
pelanggan = [
{"nama": "Rina", "umur": 25, "email": "[email protected]"},
{"nama": "Budi", "umur": 16, "email": "[email protected]"},
{"nama": "Sari", "umur": 30, "email": ""},
{"nama": "Dedi", "umur": 22, "email": "[email protected]"},
]
valid = []
for p in pelanggan:
# email tidak kosong DAN umur cukup
if p["email"] != "" and p["umur"] >= 17:
valid.append(p["nama"])
print(valid) # ['Rina', 'Dedi']
# or untuk aturan alternatif
bebas_antre = [p["nama"] for p in pelanggan
if p["nama"] == "Rina" or p["umur"] > 60]
print(bebas_antre) # ['Rina']Kesalahan umum pemula
SALAH: membandingkan setengah-setengah
umur = 20
if umur > 17 and < 30: # SyntaxError!
print("dewasa muda")BENAR: ulangi variabelnya (atau pakai perbandingan berantai)
if umur > 17 and umur < 30:
print("dewasa muda")
# atau lebih Pythonic:
if 17 < umur < 30:
print("dewasa muda")SALAH: menulis == True yang tidak perlu
if aktif == True: # jalan sih, tapi tidak idiomatik
print("sistem jalan")BENAR: boolean langsung dipakai
if aktif:
print("sistem jalan")
if not aktif:
print("sistem mati")SALAH: lupa prioritas not
if not umur == 17: # membingungkan dibaca
print("bukan 17")BENAR: pakai kurung supaya jelas
if not (umur == 17):
print("bukan 17")
# atau lebih jelas lagi:
if umur != 17:
print("bukan 17")Tantangan
Filter Siswa Lulus
Diberi list dict berisi nama, nilai, dan persen kehadiran. Tulis kondisi boolean yang memilih siswa dengan nilai >= 75 DAN kehadiran >= 80, lalu kumpulkan namanya ke list baru.