Percabangan & Logika Keputusan (If, Elif, Else)
Struktur kontrol alur keputusan kondisional, nested if-else, operator ternary python (conditional expression), dan studi kasus kasir diskon.
- Memahami cara kerja evaluasi kondisi Boolean dalam percabangan.
- Mampu menulis percabangan tunggal, ganda, dan majemuk (
if,elif,else). - Memahami percabangan bersarang (Nested If) dan teknik Ternary Operator.
- Mengenal sintaks
match-caseuntuk pattern matching (Python 3.10+).
1. Struktur If, Elif, dan Else
Struktur percabangan memungkinkan program menentukan blok kode mana yang akan dieksekusi berdasarkan terpenuhi atau tidaknya suatu kondisi (bernilai True).
nilai = float(input("Masukkan nilai ujian (0 - 100): "))
if nilai >= 85:
grade = "A (Sangat Memuaskan)"
elif nilai >= 75:
grade = "B (Baik)"
elif nilai >= 60:
grade = "C (Cukup)"
elif nilai >= 50:
grade = "D (Kurang)"
else:
grade = "E (Tidak Lulus)"
print(f"Hasil Evaluasi: {grade}")
2. Nested If & Ternary Operator (One-Liner)
Nested If (Kondisi Bersarang)
Percabangan di dalam percabangan lain digunakan saat keputusan kedua bergantung pada hasil keputusan pertama.
umur = 19
punya_ktp = True
if umur >= 17:
if punya_ktp:
print("Boleh membuat Surat Izin Mengemudi (SIM).")
else:
print("Silakan rekam dan buat KTP terlebih dahulu.")
else:
print("Belum cukup umur untuk membuat SIM.")
Ternary Operator (Conditional Expression)
Sintaks ringkas satu baris untuk memilih nilai berdasarkan kondisi: nilai_jika_true if kondisi else nilai_jika_false.
angka = 7
status = "Genap" if angka % 2 == 0 else "Ganjil"
print(f"Angka {angka} adalah bilangan {status}.")
3. Match-Case Statement (Python 3.10+)
Sejak Python 3.10, Python memperkenalkan fitur match-case (mirip switch-case pada bahasa C/Java, namun jauh lebih fleksibel dengan kemampuan pattern matching).
status_code = 404
match status_code:
case 200:
pesan = "OK - Permintaan berhasil"
case 400:
pesan = "Bad Request - Format salah"
case 404:
pesan = "Not Found - Halaman tidak ditemukan"
case 500:
pesan = "Internal Server Error"
case _:
pesan = "Kode status tidak dikenali"
print(f"Hasil Status HTTP {status_code}: {pesan}")
4. Latihan Mandiri: Sistem Kasir Diskon
Tantangan 4: Perhitungan Diskon Belanja
Buat program kasir_diskon.py dengan aturan berikut:
• Jika total belanja ≥ Rp 500.000 → Diskon 15%
• Jika total belanja ≥ Rp 200.000 → Diskon 10%
• Jika total belanja ≥ Rp 100.000 → Diskon 5%
• Di bawah Rp 100.000 → Tidak ada diskon (0%)
Hitung dan cetak: Total Awal, Potongan Diskon (Rp), dan Total Akhir yang harus dibayar.
| Sintaks / Perintah | Keterangan Fungsi |
|---|---|
if kondisi: |
Mengeksekusi blok kode jika kondisi bernilai True |
elif kondisi_lain: |
Kondisi alternatif jika kondisi sebelumnya False |
else: |
Blok cadangan yang dieksekusi jika seluruh kondisi False |
==, !=, <, <=, >, >= |
Operator relasional perbandingan kesetaraan dan besar nilai |
min <= x <= max |
Chained comparison (rantai perbandingan matematis linier) |
x = A if cond else B |
Ternary operator (ekspresi penetapan nilai kondisional satu baris) |
Jobsheet 02: Kontrol Alur, Percabangan & Perulangan
Bangun sistem kasir supermarket interaktif dengan perhitungan diskon bertingkat dan validasi status keanggotaan.
Salah mengetikkan satu tanda sama dengan (=) untuk perbandingan kondisi di dalam if alih-alih dua tanda sama dengan (==).
# SyntaxError: invalid syntax (cannot assign to expression)
status = "member"
if status = "member": # ERROR: ini assignment, bukan cek kesamaan
print("Dapat diskon khusus")
# Solusi Benar:
status = "member"
if status == "member": # Menggunakan operator pembanding ==
print("Dapat diskon khusus")
= adalah penugasan nilai (*assignment*), sedangkan == adalah operator pengujian kesetaraan (*equality*). Python melarang = di dalam if untuk mencegah bug logika.
Python memungkinkan rantai perbandingan matematis dan penugasan nilai satu baris menggunakan ekspresi ternary.
# Kurang Pythonic (Kondisi bertingkat & 4 baris if-else)
skor = 85
# Perbandingan panjang dengan and
if skor >= 60 and skor <= 100:
pass
# Penugasan status
if skor >= 75:
status = "Lulus"
else:
status = "Remedial"
# Pythonic (Chained Comparison & Ternary Expression)
skor = 85
# Rantai perbandingan ala matematika
if 60 <= skor <= 100:
pass
# Ekspresi Ternary 1 baris:
status = "Lulus" if skor >= 75 else "Remedial"
60 <= skor <= 100 lebih mudah dibaca sekilas. Ekspresi ternary nilai_jika_benar if kondisi else nilai_jika_salah sangat cocok untuk penetapan nilai variabel bersyarat yang sederhana.
Cek Pemahaman Mandiri
Uji pemahaman Anda terhadap konsep bab ini dengan feedback evaluasi instan.
Kapan blok kode di dalam else akan dieksekusi pada struktur if-elif-else?
💡 Pembahasan: Blok else merupakan cabang default yang hanya akan dijalankan jika tidak ada satupun kondisi if atau elif di atasnya yang terpenuhi (bernilai True).
Manakah penulisan Ternary Operator (kondisi satu baris) yang valid di Python?
💡 Pembahasan: Python menggunakan pola nilai_jika_benar if kondisi else nilai_jika_salah untuk ekspresi kondisional satu baris.