Pendamping Bab 8: Percabangan dengan if, elif, dan else. Gunakan nomor contoh dan latihan yang sama dengan buku.

Tujuan Belajar

  • Menentukan cabang berdasarkan kondisi.
  • Menggabungkan perbandingan dengan and, or, dan not.
  • Memeriksa batas nilai pada aturan keputusan.

Persiapan

Kamu sudah memahami variabel, boolean, dan string. Contoh inti memakai nilai yang ditulis langsung; input dan try/except dibahas pada Bab 10 dan Bab 15.

Program dengan tombol Coba di IDE dapat dijalankan di browser. Untuk program lokal, unduh sumber, ekstrak ZIP, lalu ikuti README.txt.

Pembahasan

08-01 – Struktur Dasar if

Code if memeriksa apakah suatu kondisi benar (True). Jika ya, program menjalankan blok code di bawahnya.

Coba di IDE Unduh Sumber
umur = 18

if umur >= 17:
    print("Budi sudah bisa membuat KTP!")

Hasil yang diharapkan:

Budi sudah bisa membuat KTP!

Coba ubah: Ubah umur dari 18 menjadi 19, lalu prediksi hasilnya.

08-02 – Menambahkan else

else menangani kasus ketika kondisi if salah (False). Ini seperti mengatakan, "Jika kondisi A tidak terpenuhi, maka lakukan B.".

Coba di IDE Unduh Sumber
umur = 15

if umur >= 17:
    print("Budi sudah bisa buat KTP")
else:
    print("Budi belum bisa buat KTP")

Hasil yang diharapkan:

Budi belum bisa buat KTP

Coba ubah: Ubah umur dari 15 menjadi 16, lalu prediksi hasilnya.

08-03 – Menggunakan elif (else if)

Instruksi dijalankan dari atas ke bawah; print menampilkan nilai saat instruksi itu dijalankan.

Coba di IDE Unduh Sumber
nilai = 85

if nilai >= 90:
    print("Grade A")
elif nilai >= 75:
    print("Grade B")
elif nilai >= 60:
    print("Grade C")
else:
    print("Grade D")

Hasil yang diharapkan:

Grade B

Coba ubah: Ubah nilai dari 85 menjadi 86, lalu prediksi hasilnya.

08-04 – Operator Perbandingan

Instruksi dijalankan dari atas ke bawah; print menampilkan nilai saat instruksi itu dijalankan.

Coba di IDE Unduh Sumber
angka_saya = 7
if angka_saya < 10:
    print("Angka saya kurang dari 10")

Hasil yang diharapkan:

Angka saya kurang dari 10

Coba ubah: Ubah angka_saya dari 7 menjadi 8, lalu prediksi hasilnya.

08-05 – Operator Logika

Instruksi dijalankan dari atas ke bawah; print menampilkan nilai saat instruksi itu dijalankan.

Coba di IDE Unduh Sumber
umur = 20
sudah_lulus_sma = True

if umur >= 18 and sudah_lulus_sma:
    # Keduanya True, jadi ini dijalankan
    print("Budi bisa daftar kuliah!")
else:
    print("Budi belum memenuhi syarat.")

Hasil yang diharapkan:

Budi bisa daftar kuliah!

Coba ubah: Ubah umur dari 20 menjadi 21, lalu prediksi hasilnya.

08-06 – if Bersarang (Nested If)

Kamu bisa menempatkan if di dalam if (atau elif/else) untuk logika yang lebih kompleks atau bertingkat. Ini seperti membuat keputusan di dalam keputusan.

Coba di IDE Unduh Sumber
umur = 25
warga_negara_indonesia = True
punya_ktp = True

if warga_negara_indonesia:
    print("Status: WNI.")
    if umur >= 17:
        print("Usia memenuhi syarat untuk KTP.")
        if punya_ktp:
            print("Sudah punya KTP, bisa memilih di pemilu!")
        else:
            print("Belum punya KTP, segera urus!")
    else:
        print("Usia belum memenuhi syarat untuk KTP.")
else:
    print("Status: Bukan WNI, tidak bisa memilih")
    print("di pemilu Indonesia.")

Hasil yang diharapkan:

Status: WNI.
Usia memenuhi syarat untuk KTP.
Sudah punya KTP, bisa memilih di pemilu!

Coba ubah: Ubah umur dari 25 menjadi 26, lalu prediksi hasilnya.

08-07 – Operator Ternary (Inline if)

Coba Sekarang: Jalankan code di atas. Pertama, masukkan namamu. Kedua, jalankan lagi dan tekan Enter tanpa mengetik apa pun.

Coba di IDE Unduh Sumber
nilai = 80
status = "Lulus" if nilai >= 75 else "Gagal"
# Dibaca: status adalah "Lulus" JIKA nilai >= 75, JIKA TIDAK "Gagal"
print(f"Nilai kamu {nilai}, status: {status}")

Hasil yang diharapkan:

Nilai kamu 80, status: Lulus

Coba ubah: Ubah nilai dari 80 menjadi 81, lalu prediksi hasilnya.

Studi Kasus

08-08 – Menentukan diskon belanja

Cabang pertama memeriksa dua syarat. Cabang berikutnya menangani pembeli nonanggota yang memenuhi batas belanja. Nilai contoh dipilih agar potongan merupakan rupiah bulat.

Coba di IDE Unduh Sumber
total_belanja = 150000
anggota = True
if total_belanja >= 100000 and anggota:
    persen_diskon = 10
elif total_belanja >= 100000:
    persen_diskon = 5
else:
    persen_diskon = 0
potongan = total_belanja * persen_diskon // 100
print(f"Diskon: Rp {potongan}")
print(f"Bayar: Rp {total_belanja - potongan}")

Hasil yang diharapkan:

Diskon: Rp 15000
Bayar: Rp 135000

Coba ubah: Ganti anggota menjadi False, lalu periksa belanja tepat 100000 dan 99999.

Rangkuman

if memeriksa kondisi; elif menyediakan kondisi berikutnya; else menangani keadaan lainnya. Urutan cabang dan batas perbandingan menentukan hasil. Periksa nilai tepat di batas aturan.

Cek Pemahaman

Lima pertanyaan ini sama dengan pertanyaan di buku. Periksa jawaban di kuis untuk melihat skor dan pembahasan.

  1. Kapan blok if dijalankan?
  2. Dalam satu rangkaian if-elif-else, berapa cabang yang dijalankan?
  3. Kapan a and b bernilai True jika a dan b boolean?
  4. Operator untuk membandingkan kesamaan adalah …
  5. Untuk aturan nilai >= 75, nilai 75 masuk …
Kerjakan Kuis

Latihan Mandiri

Latihan 08-L01 – Genap atau ganjil

Dasar. Tentukan apakah angka 14 genap atau ganjil. Cetak Genap atau Ganjil.

Kerjakan di IDE Unduh Latihan

Hasil yang diharapkan:

Genap
Lihat Petunjuk

Bilangan genap mempunyai sisa pembagian dua sama dengan nol.

Lihat Solusi
angka = 14
if angka % 2 == 0:
    print("Genap")
else:
    print("Ganjil")

Operator % menghasilkan sisa pembagian.

Coba Solusi di IDEUnduh Solusi

Latihan 08-L02 – Kategori nilai

Penerapan. Untuk nilai 82, cetak A jika minimal 90, B jika minimal 75, dan C untuk nilai lain.

Kerjakan di IDE Unduh Latihan

Hasil yang diharapkan:

B
Lihat Petunjuk

Periksa batas tertinggi dahulu.

Lihat Solusi
nilai = 82
if nilai >= 90:
    print("A")
elif nilai >= 75:
    print("B")
else:
    print("C")

Urutan kondisi mencegah nilai tinggi masuk kategori yang terlalu rendah.

Coba Solusi di IDEUnduh Solusi

Latihan 08-L03 – Syarat potongan

Pengembangan. Cetak Dapat diskon hanya jika belanja minimal 100000 dan pelanggan anggota. Gunakan belanja 120000 dan anggota True.

Kerjakan di IDE Unduh Latihan

Hasil yang diharapkan:

Dapat diskon
Lihat Petunjuk

Kedua syarat harus terpenuhi.

Lihat Solusi
belanja = 120000
anggota = True
if belanja >= 100000 and anggota:
    print("Dapat diskon")
else:
    print("Harga biasa")

Uji juga belanja 100000, 99999, dan anggota False.

Coba Solusi di IDEUnduh Solusi

Pengembangan

Pengembangan: Diskon Belanja

Prasyarat: kerjakan setelah Bab 15.

Mari buat program yang menghitung diskon belanja di toko online berdasarkan total pembelian dan status keanggotaan:

total_belanja = int(input("Masukkan total belanja (Rp): "))
#### .lower() untuk standarisasi, .strip() untuk hapus spasi
prompt_member = "Apakah kamu member? (ya/tidak): "
member_input = input(prompt_member).lower().strip()

diskon = 0 # Inisialisasi diskon awal

#### Logika diskon berdasarkan total belanja
if total_belanja >= 500000:
    diskon = 20
#### Hanya dicek jika total_belanja < 500000
elif total_belanja >= 200000:
    diskon = 10
#### Tidak perlu else karena diskon sudah diinisialisasi = 0

#### Diskon tambahan untuk member
if member_input == "ya":
    diskon_tambahan = 5
    # Tambahkan ke diskon yang sudah ada
    diskon = diskon + diskon_tambahan
    print(f"kamu mendapatkan diskon tambahan {diskon_tambahan}% "
          f"sebagai member.")
elif member_input == "tidak":
    print("kamu tidak mendapatkan diskon tambahan member.")
else:
    print("Input status member tidak valid, "
          "diskon tambahan member tidak diberikan.")


#### Hitung total akhir
#### Gunakan // untuk pembagian integer agar hasilnya bulat
#### atau biarkan float jika ingin presisi desimal
potongan = total_belanja * diskon / 100
harga_setelah_diskon = total_belanja - potongan

#### Format dengan pemisah ribuan
print(f"Total belanja awal: Rp {total_belanja:,.0f}")
print(f"Total diskon yang didapat: {diskon}%")
print(f"Total yang harus dibayar: Rp {harga_setelah_diskon:,.0f}")

Contoh Output:

Masukkan total belanja (Rp): 300000
Apakah kamu member? (ya/tidak): ya
kamu mendapatkan diskon tambahan 5% sebagai member.
Total belanja awal: Rp 300.000
Total diskon yang didapat: 15%
Total yang harus dibayar: Rp 255.000

Penjelasan:

  • Program meminta input total belanja.
  • Menentukan diskon berdasarkan kondisi.
  • Menghitung total akhir setelah diskon.
  • Menggunakan f-string untuk output rapi.

Coba Sekarang: Jalankan dengan total_belanja = 600000 dan status member tidak. Lalu coba dengan total_belanja = 100000 dan status member ya. Amati perbedaannya!

Pikirkan Ini: Selain contoh di atas, di mana lagi kamu melihat penggunaan logika if-else dalam kehidupan sehari-hari atau aplikasi yang sering kamu gunakan? Misalnya, saat login ke media sosial, aplikasi mengecek apakah username dan passwordmu benar. Atau saat filter email, email masuk ke folder “Utama” atau “Spam” berdasarkan aturan tertentu.

Kegiatan Tambahan

Coba latihan berikut untuk melatih logikamu:

  1. Klasifikasi Suhu Simulasi:
    • Minta input suhu pada simulasi dalam Celcius.
    • Tampilkan:
      • “Sangat rendah” (di bawah 35 derajat C)
      • “Normal” (35 derajat C – 37.5 derajat C)
      • “Tinggi” (di atas 37.5 derajat C – 39 derajat C)
      • “Sangat tinggi” (di atas 39 derajat C)
  2. Cek Angka Positif, Negatif, atau Nol:
    • Minta input sebuah angka.
    • Tampilkan apakah angka itu positif, negatif, atau nol.
  3. Kategori SIM:
    • Minta input usia seseorang.
    • Tampilkan kategori SIM yang bisa dibuat:
      • Belum boleh punya SIM (di bawah 17)
      • Boleh SIM C (motor) (usia 17 tahun ke atas)
      • Boleh SIM A (mobil pribadi) (usia 17 tahun ke atas, bisa juga punya SIM C)
      • Boleh SIM B1 (mobil penumpang/barang perseorangan >3.5 ton) (usia 20 tahun ke atas) (Sederhanakan: jika usia >= 20, bisa semua SIM di atas. Jika 17-19, bisa A & C)
  4. Kalkulator Sederhana:
    • Minta input dua angka dan satu operator (+, -, *, /).
    • Lakukan perhitungan berdasarkan operator yang dipilih dan tampilkan hasilnya.
    • Tambahkan penanganan jika pengguna memasukkan operator yang tidak valid atau mencoba pembagian dengan nol.
Petunjuk dan Solusi Pengembangan
Klik untuk melihat contoh solusi Latihan 1

“`python suhu_str = input(“Masukkan suhu tubuh kamu (Celcius):”) try: # Konversi ke float untuk menerima desimal suhu = float(suhu_str)

if suhu < 35:
        print(f"Suhu {suhu} derajat C: Sangat rendah.")
    # Bisa juga ditulis: 35 <= suhu <= 37.5
    elif suhu >= 35 and suhu <= 37.5:
        print(f"Suhu {suhu} derajat C: Normal.")
    # Bisa juga ditulis: 37.5 < suhu <= 39
    elif suhu > 37.5 and suhu <= 39:
        print(f"Suhu {suhu} derajat C: Tinggi.")
    elif suhu > 39: # Di atas 39
        print(f"Suhu {suhu} derajat C: Sangat tinggi.")
    # Untuk kasus yang mungkin tidak tercover
    # jika logika batas salah
    else:
        print(f"Suhu {suhu} derajat C: "
              "Kategori tidak terdefinisi")
        print("dengan jelas, mohon periksa input atau batas.")

except ValueError:
    print("Input tidak valid. Harap masukkan angka untuk suhu.")
```
**Penjelasan Solusi:**
- Program meminta input suhu dan mencoba mengubahnya menjadi angka desimal (`float`).
- Menggunakan `try-except ValueError` untuk menangani jika pengguna memasukkan teks, bukan angka.
- Rangkaian `if-elif-else` digunakan untuk menentukan kategori suhu.
- Perhatikan penggunaan `and` untuk rentang nilai. Python juga mengizinkan penulisan rentang yang lebih ringkas seperti `35 <= suhu <= 37.5`.
- f-string digunakan untuk menampilkan output yang informatif.
- Ditambahkan `elif suhu > 39` dan `else` untuk kejelasan dan menangani kasus batas.
</details>
Klik untuk melihat contoh solusi Latihan 2 python # Gunakan float untuk menerima desimal angka = float(input("Masukkan sebuah angka: ")) if angka > 0: print("Angka tersebut positif.") elif angka < 0: print("Angka tersebut negatif.") else: print("Angka tersebut adalah nol.") Penjelasan Solusi: – Program meminta input angka dan mengubahnya menjadi angka desimal (float). – Menggunakan rangkaian if-elif-else untuk mengecek apakah angka tersebut lebih besar dari 0, kurang dari 0, atau sama dengan 0. – Menampilkan hasil klasifikasi angka.
Klik untuk melihat contoh solusi Latihan 3

“`python usia = int(input(“Masukkan usia kamu:”))

if usia < 17: print(“Belum boleh punya SIM.”) elif usia >= 17 and usia < 20: print(“Boleh SIM C (motor) dan SIM A (mobil pribadi).”) else: # Usia 20 ke atas print(“Boleh semua jenis SIM: A, B1, dan C.”) “**Penjelasan Solusi:** - Program meminta input usia dan mengubahnya menjadi integer. - Menggunakan rangkaianif-elif-else` untuk menentukan kategori SIM yang bisa dibuat berdasarkan usia. – Menampilkan hasil kategori SIM.
Klik untuk melihat contoh solusi Latihan 4

“`python angka1 = float(input(“Masukkan angka pertama:”)) angka2 = float(input(“Masukkan angka kedua:”)) operator = input(“Masukkan operator (+, -, *, /): “)

if operator == “+”: hasil = angka1 + angka2 print(f”Hasil: {angka1} + {angka2} = {hasil}“) elif operator ==”-“: hasil = angka1 – angka2 print(f”Hasil: {angka1} – {angka2} = {hasil}“) elif operator ==”“: hasil = angka1 * angka2 print(f”Hasil: {angka1} {angka2} = {hasil}“) elif operator ==”/“: # Cek pembagi tidak nol if angka2 != 0: hasil = angka1 / angka2 print(f”Hasil: {angka1} / {angka2} = {hasil}“) else: print(”Error: Pembagian dengan nol tidak terdefinisi.”) else: print(“Error: Operator tidak valid.” “Gunakan salah satu dari +, -, *, atau /.”) “**Penjelasan Solusi:** - Program meminta input dua angka dan satu operator. - Menggunakan rangkaianif-elif` untuk menentukan operasi yang akan dilakukan berdasarkan operator. – Menampilkan hasil perhitungan. – Menangani kemungkinan kesalahan seperti pembagian dengan nol dan operator yang tidak valid.

Referensi dan Materi Pendamping

Langkah Selanjutnya

Bab 9 membahas Perulangan dengan for dan while. Sebelum melanjutkan, pastikan kamu dapat menjelaskan tujuan belajar dan menyelesaikan tiga latihan inti bab ini.

Edisi September 2026. Nomor contoh, pertanyaan, dan latihan digunakan bersama pada buku dan halaman ini.

Bab 7 | Bab 9