pythonbooleanlogikaPemula5 mnt baca

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

python
# 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)  # True

Catatan teknis: Python mengevaluasi boolean dengan short-circuit. Pada A and B, kalau A sudah False, B tidak dicek lagi. Pada A or B, kalau A sudah True, B dilewati. Ini berguna untuk menghindari error, misalnya if 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:

python
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)  # False

Contoh 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:

python
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

python
umur = 20
if umur > 17 and < 30:   # SyntaxError!
    print("dewasa muda")

BENAR: ulangi variabelnya (atau pakai perbandingan berantai)

python
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

python
if aktif == True:   # jalan sih, tapi tidak idiomatik
    print("sistem jalan")

BENAR: boolean langsung dipakai

python
if aktif:
    print("sistem jalan")
if not aktif:
    print("sistem mati")

SALAH: lupa prioritas not

python
if not umur == 17:  # membingungkan dibaca
    print("bukan 17")

BENAR: pakai kurung supaya jelas

python
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.