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.

python
suhu = 31

if suhu > 30:
    print("Cuaca hari ini sangat panas")

Output yang Dihasilkan:

text
Cuaca hari ini sangat panas

Mari kita telaah apa yang terjadi pada baris-baris kode di atas:

  1. Baris 1 (suhu = 31): variabel suhu dibuat dan diisi integer 31.
  2. Baris 3 (if suhu > 30:): interpreter Python mengevaluasi perbandingan 31 > 30 menjadi True, sehingga eksekusi masuk ke dalam blok.
  3. Baris 4 (print(...)): fungsi print() 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.

python
>>> bool(0)
False
>>> bool("")
False
>>> bool([])
False
>>> bool("Python")
True
>>> bool([1, 2])
True

Tabel berikut merangkum nilai yang dievaluasi False:

NilaiHasil evaluasi
False, NoneFalse
0, 0.0False
"" (string kosong)False
[], (), {}, set() (koleksi kosong)False
Nilai lainnyaTrue

Perilaku ini disebut truthiness dan sering dipakai untuk memeriksa apakah sebuah data berisi:

python
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:

text
Nama masih kosong
Keranjang kosong, yuk isi

Karena 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.

python
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:

text
Grade C

Mari kita telaah apa yang terjadi pada baris-baris kode di atas:

  1. Baris 1 (nilai = 78): variabel nilai diisi integer 78.
  2. Baris 3 (if nilai >= 90:): 78 >= 90 bernilai False, cabang pertama dilewati.
  3. Baris 5 (elif nilai >= 80:): 78 >= 80 bernilai False, cabang kedua dilewati.
  4. Baris 7 (elif nilai >= 70:): 78 >= 70 bernilai True, fungsi print() mencetak Grade C.
  5. Baris 9 (else:): karena sudah ada cabang yang cocok, blok else tidak 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:

python
nilai = 95

if nilai >= 70:
    print("Cabang pertama: siswa dinyatakan lulus")
elif nilai >= 90:
    print("Cabang kedua: siswa mendapat grade A")

Output yang Dihasilkan:

text
Cabang pertama: siswa dinyatakan lulus

nilai 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.