Learn
← Previous Next →

Hari 5: Percabangan — if, elif, else & match

60 min Last updated 26 Mar 2026

if / elif / else

Python menggunakan indentasi (4 spasi) sebagai penanda blok — bukan tanda kurung kurawal.

nilai = 82

if nilai >= 90:
    print("Grade A — Sempurna!")
elif nilai >= 80:
    print("Grade B — Bagus!")
elif nilai >= 70:
    print("Grade C — Cukup")
elif nilai >= 60:
    print("Grade D — Perlu Perbaikan")
else:
    print("Grade E — Tidak Lulus")

Kondisi Majemuk

umur  = 20
memiliki_ktp = True

# Cek syarat masuk bioskop 17+
if umur >= 17 and memiliki_ktp:
    print("Boleh masuk")
elif umur >= 17 and not memiliki_ktp:
    print("Usia cukup, tapi tidak ada KTP")
else:
    print("Belum cukup umur")

# Cek range
suhu = 36.8
if 36.5 <= suhu <= 37.5:
    print("Suhu normal")
elif suhu > 37.5:
    print("Demam!")
else:
    print("Suhu rendah")

Ternary Expression

# nilai_jika_true if kondisi else nilai_jika_false
status = "Lulus" if nilai >= 70 else "Gagal"
print(status)

# Nested ternary (hindari jika terlalu rumit)
grade = "A" if nilai>=90 else "B" if nilai>=80 else "C"

match / case (Python 3.10+)

Seperti switch-case di bahasa lain, tapi jauh lebih powerful.

hari = "Senin"

match hari:
    case "Sabtu" | "Minggu":
        print("Hari libur!")
    case "Senin" | "Selasa" | "Rabu" | "Kamis" | "Jumat":
        print("Hari kerja")
    case _:
        print("Hari tidak dikenal")

# match dengan nilai
kode = 404
match kode:
    case 200:
        print("OK")
    case 404:
        print("Not Found")
    case 500:
        print("Server Error")
    case _:
        print(f"Kode tidak dikenal: {kode}")

Nested if

saldo = 500_000
jumlah_tarik = 200_000
pin_benar    = True

if pin_benar:
    if jumlah_tarik <= saldo:
        saldo -= jumlah_tarik
        print(f"Penarikan berhasil. Sisa: Rp {saldo:,}")
    else:
        print("Saldo tidak mencukupi")
else:
    print("PIN salah!")

Assignment

Buat sistem tiket bioskop. Input: umur dan jenis hari (weekday/weekend). Harga: Dewasa (>=18) weekday Rp 40.000, weekend Rp 60.000. Anak (<18) weekday Rp 25.000, weekend Rp 35.000. Tampilkan harga dan tipe tiket.

Expected output:

Tipe Tiket : Dewasa
Hari : Weekend
Harga : Rp 60,000
PY main.py
Solution
Output