Pemrograman Python: Dari Nol sampai Proyek Mini

Belum masuk. Progresmu tidak tersimpan.

Masuk
  • Bab 5 dari 11
  • 25 menit
  • 1 latihan kode
  • 4 soal kuis

Percabangan: if, elif, dan else

Di bab ini (9 bagian)
  1. Tujuan
  2. Kenapa program perlu bisa memilih
  3. Bentuk dasar if
  4. if, elif, else: banyak pilihan
  5. Kondisi gabungan: and, or, not
  6. Truthy dan falsy
  7. Nested if: if di dalam if
  8. Kesalahan umum
  9. Rangkuman

Tujuan bab ini

  • Menulis percabangan dengan if, elif, dan else memakai indentasi yang benar.
  • Memahami bahwa Python mengecek kondisi dari atas ke bawah dan berhenti di kondisi pertama yang True.
  • Menggabungkan kondisi dengan and, or, dan not, 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.

suhu = 34

if suhu > 30:
    print("Panas banget, bawa minum ya")

print("Program selesai")

Output:

Panas banget, bawa minum ya
Program selesai

Perhatikan tiga hal kecil yang sering terlewat:

  1. Baris if diakhiri titik dua (:).
  2. Baris di bawahnya menjorok 4 spasi. Inilah yang disebut indentasi.
  3. Baris print("Program selesai") tidak menjorok, jadi ia berada di luar if dan 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.

nilai = 78

if nilai >= 85:
    grade = "A"
elif nilai >= 70:
    grade = "B"
elif nilai >= 55:
    grade = "C"
else:
    grade = "D"

print(f"Nilai {nilai} mendapat grade {grade}")

Output:

Nilai 78 mendapat grade B

Alur pengecekan grade dari atas ke bawah

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:

LangkahKondisiHasilTindakan
178 >= 85Falselanjut ke bawah
278 >= 70Truegrade = "B", berhenti
378 >= 55tidak dicekdilewati

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.

OperatorArtinyaContohTrue bila
anddanumur >= 17 and punya_ktpkeduanya True
oratauhari == "Sabtu" or hari == "Minggu"salah satu True
notbukannot sudah_bayarkondisinya False
umur = 19
punya_tiket = True
hari = "Minggu"

if umur >= 17 and punya_tiket:
    print("Boleh masuk konser")

if hari == "Sabtu" or hari == "Minggu":
    print("Weekend, waktunya rebahan")

if not punya_tiket:
    print("Beli tiket dulu")

Output:

Boleh masuk konser
Weekend, waktunya rebahan

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.0angka selain nol, misal 5, -1
"" (string kosong)"halo", bahkan " " (spasi)
[], {}, (), set()koleksi yang berisi minimal satu item
None, FalseTrue

Ini berguna untuk mengecek apakah data kosong:

nama = ""

if nama:
    print(f"Halo, {nama}!")
else:
    print("Nama belum diisi")

Output:

Nama belum diisi

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.

sudah_login = True
saldo = 15000
harga = 20000

if sudah_login:
    if saldo >= harga:
        print("Pembayaran berhasil")
    else:
        print("Saldo kurang", harga - saldo)
else:
    print("Silakan login dulu")

Output:

Saldo kurang 5000

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 >= 85 tanpa : langsung memicu SyntaxError.
  • 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 >= 55 di 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 lengkap hari == "Sabtu" or hari == "Minggu", atau hari in ("Sabtu", "Minggu").

Rangkuman

  • if menjalankan blok bila kondisinya True; elif menambah pilihan; else menangkap 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, dan not menggabungkan kondisi; perbandingan berantai seperti 13 <= umur <= 19 juga boleh.
  • Nilai kosong seperti 0, "", [], dan None dianggap falsy; nilai lainnya truthy.

Selesaikan bab ini

  1. 1. Baca materi
  2. 2. Latihan kode (1)
  3. 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.

NilaiGrade
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

  1. 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")
  2. 2Apa fungsi indentasi 4 spasi di bawah baris if?

  3. 3Kondisi if nama: bernilai False bila nama berisi string kosong "".

  4. 4Kondisi mana yang benar untuk mengecek bahwa umur minimal 17 dan punya_ktp bernilai True?