Kursus Python / Memilih jalur dengan if, elif, dan else

Rangkaian if, elif, dan else memilih jalur eksekusi dengan memeriksa kondisi dari atas ke bawah. Hanya cabang pertama yang cocok dijalankan, sehingga urutan kondisi dan batas rentang perlu ditentukan sebelum kode ditulis.

Gunakan indentasi untuk menentukan isi cabang

Baris kondisi diakhiri titik dua, lalu instruksi di dalam cabang ditulis menjorok dengan kedalaman yang konsisten. Gunakan empat spasi sebagai kebiasaan penulisan dan jangan mencampur tab dengan spasi. else tidak memiliki kondisi: ia menangani keadaan yang tidak cocok dengan cabang sebelumnya.

Dua instruksi if terpisah dapat sama-sama dijalankan jika kondisinya benar. Sebaliknya, satu rangkaian if–elif–else memilih satu cabang. Gunakan rangkaian untuk kategori yang saling eksklusif; gunakan pemeriksaan terpisah jika dua peringatan independen memang harus muncul bersama.

Tutorial percabangan Python menjelaskan struktur ini. Untuk menyusun kondisi, gunakan perbedaan perbandingan dan nilai logika pada contoh operator perbandingan, and, dan or.

Jalankan klasifikasi jumlah yang lengkap

Simpan kode berikut sebagai classify.py dengan encoding UTF-8. Gunakan Python 3.12 atau lebih baru dan jalankan python classify.py dari folder latihan dengan interpreter proyek. Semua masukan terdapat pada variabel amount; tidak perlu paket tambahan atau berkas data.

amount = 8000
if amount < 0:
    label = "invalid"
elif amount == 0:
    label = "free"
elif amount <= 10000:
    label = "small"
else:
    label = "large"
print(label)

Keluaran yang diharapkan:

small

Dengan amount = 8000, pemeriksaan negatif dan nol gagal. Kondisi amount <= 10000 kemudian cocok, sehingga label menjadi "small". Cabang else tidak dijalankan. print(label) berada di luar rangkaian dan dijalankan sesudah label ditentukan.

Teks label pada kode tetap sama agar hasil mudah dibandingkan: invalid berarti tidak sah, free untuk jumlah nol, small untuk kelompok kecil, dan large untuk kelompok besar. Ini adalah aturan latihan, bukan standar klasifikasi pengeluaran yang berlaku untuk semua aplikasi.

Tentukan rentang dan batasnya

Jumlah integer Label yang diharapkan
-1 invalid
0 free
1 atau 10000 small
10001 large

Untuk jumlah integer, contoh membagi nilai ke negatif, nol, satu sampai sepuluh ribu, dan di atas sepuluh ribu. Kondisi awal menyingkirkan kasus sebelum kondisi berikutnya dipertimbangkan. Jika pemeriksaan amount <= 10000 ditempatkan sebelum pemeriksaan negatif atau nol, kasus-kasus itu akan masuk cabang yang terlalu luas dan cabang khusus di bawahnya tidak tercapai.

Skrip ini belum memvalidasi tipe masukan secara lengkap. String pengguna harus diubah terlebih dahulu sebelum dibandingkan dengan angka, seperti pada latihan input dan konversi jumlah. Jika aturan hanya menerima integer, lakukan pemeriksaan tersebut secara terpisah; percabangan di atas juga dapat mengklasifikasikan nilai numerik lain yang bisa dibandingkan.

Uji nilai tepat pada batas dan di sebelahnya. Mengulang nilai tengah 8000 tidak membuktikan bahwa jumlah nol, negatif, atau 10000 mendapat label yang benar. Tuliskan rentang yang diinginkan sebelum mengubah operator.

Pastikan setiap jalur menghasilkan nilai

Variabel yang dipakai setelah rangkaian harus mendapat nilai pada setiap jalur yang mungkin. Jika result hanya ditugaskan pada cabang benar lalu dipakai setelah kondisi salah, nama tersebut dapat belum didefinisikan. Tetapkan nilai awal sebelum percabangan atau isi nilainya pada kedua jalur if dan else.

Pada tingkat skrip, membaca nama yang tidak ada dapat menghasilkan NameError. Di dalam fungsi, nama yang ditugaskan dalam fungsi biasanya dianggap lokal; jalur yang membacanya sebelum nilai diberikan dapat menghasilkan UnboundLocalError. Aturan pencarian nama dalam model eksekusi Python menjelaskan perbedaannya. Contoh lengkap menghindari masalah ini karena semua cabang memberi nilai pada label.

  1. Ganti amount dengan setiap nilai pada tabel dan jalankan ulang untuk memeriksa seluruh cabang.
  2. Dengan amount = 10000, ubah hanya elif amount <= 10000: menjadi elif amount < 10000:. Label berubah menjadi large. Kembalikan operator ke <= dan periksa small.
  3. Pulihkan amount = 8000 agar skrip kembali sama dengan contoh.

Jika suatu cabang tampak tidak pernah berjalan, periksa kondisi yang lebih awal dan kemungkinan rentang yang tumpang tindih sebelum menambah percabangan bersarang. Tujuannya adalah membuat jalur eksekusi dan tempat penentuan nilai mudah diikuti, bukan sekadar mempersingkat kode.