Program yang bermanfaat hampir selalu perlu mengambil keputusan: menerapkan diskon hanya untuk pelanggan tertentu, menolak input yang tidak valid, atau menampilkan menu sesuai pilihan pengguna. Struktur if, elif, dan else adalah alat Python untuk memilih jalur eksekusi seperti itu. Pada Chapter ini kita akan membedah cara interpreter Python mengevaluasi kondisi, bagaimana rantai elif memilih satu cabang, dan mengapa urutan penulisan kondisi menentukan hasil akhir program.
Struktur Dasar if #
Kata kunci if diikuti sebuah ekspresi, lalu ditutup titik dua (:). Interpreter Python mengevaluasi ekspresi tersebut menjadi True atau False. Jika hasilnya True, blok berindentasi di bawah if dieksekusi; jika False, interpreter Python melewati seluruh blok tersebut.
suhu = 31
if suhu > 30:
print("Cuaca hari ini sangat panas")Output yang Dihasilkan:
Cuaca hari ini sangat panasMari kita telaah apa yang terjadi pada baris-baris kode di atas:
- Baris 1 (
suhu = 31): variabelsuhudibuat dan diisi integer31. - Baris 3 (
if suhu > 30:): interpreter Python mengevaluasi perbandingan31 > 30menjadiTrue, sehingga eksekusi masuk ke dalam blok. - Baris 4 (
print(...)): fungsiprint()mencetak pesan ke terminal.
Indentasi, bukan kurung kurawal, yang menandai isi blok if. Aturan indentasi ini sudah kita bahas pada Chapter Indentasi dan Code Block.
Truthiness: Kondisi Tidak Harus Berupa Boolean #
Ekspresi setelah if tidak harus berupa True atau False literal. Interpreter Python memanggil fungsi bool() untuk mengubah nilai apa pun menjadi boolean. Nilai “kosong” dievaluasi menjadi False; nilai yang berisi dievaluasi menjadi True.
>>> bool(0)
False
>>> bool("")
False
>>> bool([])
False
>>> bool("Python")
True
>>> bool([1, 2])
TrueTabel berikut merangkum nilai yang dievaluasi False:
| Nilai | Hasil evaluasi |
|---|---|
False, None | False |
0, 0.0 | False |
"" (string kosong) | False |
[], (), {}, set() (koleksi kosong) | False |
| Nilai lainnya | True |
Perilaku ini disebut truthiness dan sering dipakai untuk memeriksa apakah sebuah data berisi:
nama = ""
keranjang = []
if nama:
print("Halo,", nama)
else:
print("Nama masih kosong")
if keranjang:
print("Ada item di keranjang")
else:
print("Keranjang kosong, yuk isi")Output yang Dihasilkan:
Nama masih kosong
Keranjang kosong, yuk isiKarena string "" dan list [] sama-sama kosong, kedua pemeriksaan jatuh ke blok else masing-masing. Pembahasan lebih dalam tentang evaluasi ini ada pada Chapter Truthiness dan Short-Circuit.
else dan elif untuk Banyak Cabang #
Blok else berjalan bila semua kondisi sebelumnya gagal, sedangkan elif menguji kondisi berikutnya. Interpreter Python mengevaluasi kondisi dari atas ke bawah, lalu mengeksekusi satu cabang pertama yang bernilai True — cabang lainnya dilewati sepenuhnya.
nilai = 78
if nilai >= 90:
print("Grade A")
elif nilai >= 80:
print("Grade B")
elif nilai >= 70:
print("Grade C")
else:
print("Belum lulus, silakan ikuti remedial")Output yang Dihasilkan:
Grade CMari kita telaah apa yang terjadi pada baris-baris kode di atas:
- Baris 1 (
nilai = 78): variabelnilaidiisi integer78. - Baris 3 (
if nilai >= 90:):78 >= 90bernilaiFalse, cabang pertama dilewati. - Baris 5 (
elif nilai >= 80:):78 >= 80bernilaiFalse, cabang kedua dilewati. - Baris 7 (
elif nilai >= 70:):78 >= 70bernilaiTrue, fungsiprint()mencetakGrade C. - Baris 9 (
else:): karena sudah ada cabang yang cocok, blokelsetidak pernah diperiksa.
Urutan Kondisi Menentukan Hasil #
Karena interpreter Python berhenti pada kondisi True pertama, kondisi yang lebih spesifik harus ditulis lebih dulu. Perhatikan contoh berikut:
nilai = 95
if nilai >= 70:
print("Cabang pertama: siswa dinyatakan lulus")
elif nilai >= 90:
print("Cabang kedua: siswa mendapat grade A")Output yang Dihasilkan:
Cabang pertama: siswa dinyatakan lulusnilai bernilai 95, tetapi pesan “grade A” tidak pernah tercetak. Kondisi nilai >= 70 diperiksa lebih dulu dan bernilai True, sehingga cabang elif nilai >= 90 tidak pernah dievaluasi. Alur lengkap rantai kondisi penilaian dapat kita lihat pada diagram berikut:
Dengan if, elif, dan else, kita sudah bisa menyusun cabang berbasis satu kondisi. Selanjutnya, kita bahas kondisi yang saling bertingkat pada Chapter Nested Conditions.