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