- Bab 5 dari 11
- 25 menit
- 1 latihan kode
- 4 soal kuis
Percabangan: if, elif, dan else
Di bab ini (9 bagian)
Tujuan bab ini
- Menulis percabangan dengan
if,elif, danelsememakai indentasi yang benar. - Memahami bahwa Python mengecek kondisi dari atas ke bawah dan berhenti di kondisi pertama yang
True. - Menggabungkan kondisi dengan
and,or, dannot, serta mengenali nilai truthy dan falsy.
Kenapa program perlu bisa memilih
Sampai bab sebelumnya, program kita berjalan lurus: baris pertama, kedua, ketiga, dan seterusnya. Padahal hampir semua aplikasi yang kamu pakai setiap hari penuh dengan keputusan. Kalau password benar, kamu masuk. Kalau saldo kurang, transfer ditolak. Kalau jam sudah lewat 22.00, aplikasi berganti ke mode gelap.
Keputusan seperti itu disebut percabangan. Analogi gampangnya: percabangan itu seperti persimpangan jalan di Google Maps. Program melihat kondisi, lalu memilih satu jalur, dan jalur lain dilewati begitu saja.
Bentuk dasar if
Bentuk paling sederhana hanya punya satu if.
Output:
Perhatikan tiga hal kecil yang sering terlewat:
- Baris
ifdiakhiri titik dua (:). - Baris di bawahnya menjorok 4 spasi. Inilah yang disebut indentasi.
- Baris
print("Program selesai")tidak menjorok, jadi ia berada di luarifdan selalu dijalankan.
Di banyak bahasa lain, blok kode ditandai kurung kurawal { }. Python memakai indentasi sebagai gantinya. Jadi indentasi di Python bukan sekadar soal rapi, tapi bagian dari aturan bahasa. Standar yang dipakai komunitas (PEP 8) adalah 4 spasi per tingkat.
if, elif, else: banyak pilihan
Kalau pilihannya lebih dari dua, pakai elif (singkatan dari else if) dan tutup dengan else untuk semua kemungkinan sisanya. Contoh klasiknya adalah mengubah nilai ujian menjadi grade.
Output:
Urutan pengecekan itu penting
Python membaca kondisi dari atas ke bawah dan menjalankan blok pertama yang bernilai True. Setelah satu blok jalan, sisanya dilewati. Mari telusuri langkah demi langkah untuk nilai = 78:
| Langkah | Kondisi | Hasil | Tindakan |
|---|---|---|---|
| 1 | 78 >= 85 | False | lanjut ke bawah |
| 2 | 78 >= 70 | True | grade = "B", berhenti |
| 3 | 78 >= 55 | tidak dicek | dilewati |
Padahal 78 >= 55 juga benar. Tapi karena kondisi kedua sudah True, kondisi ketiga tidak pernah diperiksa. Itulah sebabnya kita tidak perlu menulis nilai >= 70 and nilai < 85; batas atasnya sudah dijamin oleh urutan.
Coba bayangkan kalau urutannya dibalik dan nilai >= 55 ditaruh paling atas. Semua nilai 55 ke atas, termasuk 100, akan mendapat grade C. Aturan praktisnya: tulis kondisi yang paling ketat lebih dulu.
Bagian elif dan else sifatnya opsional. Kamu boleh menulis if saja, if dengan else, atau if dengan beberapa elif tanpa else. Yang tidak boleh adalah elif atau else tanpa if di atasnya.
Kondisi gabungan: and, or, not
Kadang satu syarat tidak cukup. Python punya tiga operator logika.
| Operator | Artinya | Contoh | True bila |
|---|---|---|---|
and | dan | umur >= 17 and punya_ktp | keduanya True |
or | atau | hari == "Sabtu" or hari == "Minggu" | salah satu True |
not | bukan | not sudah_bayar | kondisinya False |
Output:
Python juga mengizinkan perbandingan berantai yang terasa seperti matematika: if 13 <= umur <= 19: artinya umur di antara 13 sampai 19. Ini lebih mudah dibaca daripada umur >= 13 and umur <= 19.
Truthy dan falsy
Kondisi di if tidak harus berupa True atau False secara langsung. Python bisa menilai hampir semua nilai sebagai "benar" atau "salah". Nilai yang dianggap salah disebut falsy, sisanya truthy.
| Falsy (dianggap False) | Truthy (dianggap True) |
|---|---|
0, 0.0 | angka selain nol, misal 5, -1 |
"" (string kosong) | "halo", bahkan " " (spasi) |
[], {}, (), set() | koleksi yang berisi minimal satu item |
None, False | True |
Ini berguna untuk mengecek apakah data kosong:
Output:
Kamu bisa mengecek sendiri dengan bool(), misalnya bool([]) menghasilkan False dan bool("0") menghasilkan True karena string "0" tidak kosong.
Nested if: if di dalam if
Percabangan bisa ditaruh di dalam percabangan lain. Setiap tingkat menambah 4 spasi.
Output:
Nested if memang wajar, tapi kalau sudah tiga atau empat tingkat, kode jadi susah dibaca. Sering kali kamu bisa meratakannya dengan and atau dengan menyusun ulang kondisi memakai elif.
Kesalahan umum
- Lupa titik dua.
if nilai >= 85tanpa:langsung memicuSyntaxError. - Indentasi tidak konsisten. Mencampur tab dan spasi, atau 2 spasi di satu baris dan 4 spasi di baris lain, memicu
IndentationError. Atur editor agar tombol Tab menghasilkan 4 spasi. - Memakai
=alih-alih==.=untuk mengisi variabel,==untuk membandingkan.if nilai = 90:adalah error. - Urutan kondisi terbalik. Menaruh kondisi longgar seperti
nilai >= 55di atas membuat cabang lain tidak pernah tercapai. - Menulis
if hari == "Sabtu" or "Minggu":. Bagian"Minggu"adalah string tidak kosong yang selalu truthy, jadi kondisinya selalu benar. Tulis lengkaphari == "Sabtu" or hari == "Minggu", atauhari in ("Sabtu", "Minggu").
Rangkuman
ifmenjalankan blok bila kondisinyaTrue;elifmenambah pilihan;elsemenangkap semua sisanya.- Blok ditandai titik dua dan indentasi 4 spasi, bukan kurung kurawal.
- Python mengecek dari atas ke bawah dan hanya menjalankan blok pertama yang
True, jadi tulis kondisi paling ketat lebih dulu. and,or, dannotmenggabungkan kondisi; perbandingan berantai seperti13 <= umur <= 19juga boleh.- Nilai kosong seperti
0,"",[], danNonedianggap falsy; nilai lainnya truthy.
Slide 15 sampai 15 dari deck Pemrograman Python: Dari Nol sampai Proyek Mini. Penjelasan lengkapnya ada di mode Baca.

Selesaikan bab ini
- 1. Baca materi
- 2. Latihan kode (1)
- 3. Kuis (4 soal)
Latihan kode: Mengubah nilai menjadi grade
Lengkapi fungsi tentukan_grade(nilai) agar mengembalikan (pakai return, bukan print) huruf grade sesuai tabel berikut.
| Nilai | Grade |
|---|---|
| 85 ke atas | "A" |
| 70 sampai 84 | "B" |
| 55 sampai 69 | "C" |
| di bawah 55 | "D" |
Contoh: tentukan_grade(78) menghasilkan "B". Ingat, tulis kondisi paling ketat lebih dulu.
Cek pemahaman
1Apa yang dicetak kode berikut?
nilai = 75 if nilai >= 85: print("Grade A") elif nilai >= 80: print("Grade B") elif nilai >= 60: print("Grade C") else: print("Grade D")2Apa fungsi indentasi 4 spasi di bawah baris if?
3Kondisi if nama: bernilai False bila nama berisi string kosong "".
4Kondisi mana yang benar untuk mengecek bahwa umur minimal 17 dan punya_ktp bernilai True?