Sejauh ini program yang kita buat berjalan lurus dari atas ke bawah. Baris pertama jalan, baris kedua jalan, baris ketiga jalan, selesai. Tidak ada pilihan, tidak ada percabangan.
Tapi dunia nyata tidak sesederhana itu. Guru tidak cukup hanya menghitung nilai — mereka juga perlu memutuskan: apakah siswa ini lulus? Perlu remedi? Atau tidak lulus? Keputusan itu bergantung pada kondisi yang berbeda-beda.
Nah, di sinilah if-else masuk. Ini adalah cara Python “berpikir” dan mengambil jalur yang berbeda tergantung kondisi yang terjadi. Dengan if-else, program kita berubah dari sekadar kalkulator menjadi sistem yang benar-benar cerdas.
Analogi: Piket Pagi di Sekolah
Bayangkan petugas piket pagi di gerbang sekolah. Setiap siswa yang datang, petugas mengecek satu hal: apakah kamu terlambat?
- Kalau datang tepat waktu → dipersilakan masuk
- Kalau terlambat → disuruh lapor ke BK dulu
Itulah cara kerja if-else di Python. Program mengecek satu kondisi, lalu memilih satu dari dua (atau lebih) jalur yang berbeda.
terlambat = True
if terlambat:
print("Silakan lapor ke BK dulu.")
else:
print("Selamat datang! Langsung masuk kelas.")
Output:
Silakan lapor ke BK dulu.
Kalau kamu ganti terlambat = False, outputnya akan berbeda:
Selamat datang! Langsung masuk kelas.
Satu program, dua perilaku berbeda — tergantung kondisinya. Inilah inti dari if-else.
Struktur Dasar: if dan else
Format dasar if-else di Python:
if kondisi:
# kode yang dijalankan kalau kondisi True
else:
# kode yang dijalankan kalau kondisi False
Ada dua hal yang wajib diperhatikan:
1. Indentasi (lekukan) adalah wajib! Kode di dalam if dan else harus ditulis dengan lekukan ke dalam — biasanya 4 spasi atau 1 kali Tab. Ini bukan soal estetika, tapi aturan wajib Python. Tanpa indentasi yang benar, program akan error.
# BENAR ✅
nilai = 80
if nilai >= 75:
print("Lulus") # ada 4 spasi di depan
else:
print("Remedi") # ada 4 spasi di depan
# SALAH ❌ — akan error!
if nilai >= 75:
print("Lulus") # tidak ada lekukan = IndentationError
2. Jangan lupa tanda titik dua ( : ) Setelah kondisi if dan kata else, selalu ada tanda titik dua. Banyak pemula lupa ini dan bingung kenapa error!
Operator Perbandingan — Alat Pembuat Kondisi
Kondisi di dalam if selalu menghasilkan nilai True atau False. Untuk membuat kondisi itu, kita butuh operator perbandingan.

nilai = 72
print(nilai == 72) # True — sama dengan 72?
print(nilai != 100) # True — tidak sama dengan 100?
print(nilai > 75) # False — lebih besar dari 75?
print(nilai < 75) # True — lebih kecil dari 75?
print(nilai >= 72) # True — lebih besar atau sama dengan 72?
print(nilai <= 100) # True — lebih kecil atau sama dengan 100?
⚠️ Jebakan paling umum:
==vs=
nilai = 80→ mengisi variabel (assignment)nilai == 80→ membandingkan nilai (comparison)Salah satu tanda
=yang hilang akan menyebabkan bug yang membingungkan!
Tambah Pilihan dengan elif
Bagaimana kalau kondisinya lebih dari dua? Misalnya tidak hanya “lulus” atau “tidak lulus”, tapi ada juga “remedi”?
Di sinilah elif (singkatan dari “else if”) berguna. elif menambahkan kondisi tambahan di antara if dan else.

nilai = 72
if nilai >= 75:
print("Selamat! Kamu LULUS.")
elif nilai >= 60:
print("Nilai kurang, kamu perlu REMEDI.")
else:
print("Maaf, kamu TIDAK LULUS.")
Python mengecek kondisi dari atas ke bawah. Begitu menemukan kondisi yang True, ia menjalankan blok itu dan langsung berhenti — tidak mengecek kondisi di bawahnya lagi.
Untuk nilai = 72:
nilai >= 75? →False(72 < 75) → lewatinilai >= 60? →True(72 ≥ 60) → jalankan, lalu berhenti
Output:
Nilai kurang, kamu perlu REMEDI.
Kamu bisa menambahkan elif sebanyak yang dibutuhkan:
nilai = 85
if nilai >= 90:
predikat = "A (Sangat Baik)"
elif nilai >= 80:
predikat = "B (Baik)"
elif nilai >= 70:
predikat = "C (Cukup)"
elif nilai >= 60:
predikat = "D (Kurang)"
else:
predikat = "E (Sangat Kurang)"
print(f"Predikat kamu: {predikat}")
Output:
Predikat kamu: B (Baik)
Operator Logika: and, or, not
Terkadang satu kondisi saja tidak cukup. Misalnya, seorang siswa dinyatakan lulus hanya jika nilai cukup DAN kehadiran cukup. Di sinilah operator logika digunakan.
and — Kedua kondisi harus True
nilai = 80
kehadiran = 70 # persen
if nilai >= 75 and kehadiran >= 75:
print("Lulus! Nilai dan kehadiran memenuhi syarat.")
else:
print("Belum lulus. Salah satu syarat tidak terpenuhi.")
Output (karena kehadiran 70 < 75):
Belum lulus. Salah satu syarat tidak terpenuhi.
Dengan and, kedua kondisi harus True. Kalau salah satu saja False, hasilnya False.
or — Salah satu kondisi cukup
ketua_osis = False
wakil_ketua = True
if ketua_osis or wakil_ketua:
print("Kamu berhak memimpin rapat OSIS.")
else:
print("Hubungi pengurus OSIS terlebih dahulu.")
Output:
Kamu berhak memimpin rapat OSIS.
Dengan or, salah satu kondisi True sudah cukup untuk membuat hasilnya True.
not — Membalik kondisi
sudah_bayar_spp = False
if not sudah_bayar_spp:
print("Pengingat: SPP bulan ini belum dibayar!")
else:
print("Terima kasih sudah melunasi SPP.")
Output:
Pengingat: SPP bulan ini belum dibayar!
not membalik nilai kondisi — True jadi False, False jadi True.
Studi Kasus: Sistem Penentu Kelulusan Otomatis
Pak Rudi adalah wali kelas X TKJ 1. Setiap akhir semester, beliau harus mengumumkan status setiap siswa: lulus sempurna, lulus, perlu remedi, atau tidak lulus. Selama ini Pak Rudi mengecek satu per satu secara manual.
Dengan if-elif-else, kita bisa bantu Pak Rudi membuat sistem otomatis yang langsung memberi keputusan begitu nilai dimasukkan.

# =============================================
# Sistem Penentu Kelulusan Siswa
# Kelas X TKJ 1 — SMK Nusantara
# =============================================
nama = input("Nama siswa : ")
nilai_tugas = float(input("Nilai Tugas : "))
nilai_uts = float(input("Nilai UTS : "))
nilai_uas = float(input("Nilai UAS : "))
pct_hadir = float(input("Kehadiran (%) : "))
# Hitung nilai akhir
nilai_akhir = (nilai_tugas * 0.30) + (nilai_uts * 0.35) + (nilai_uas * 0.35)
# Tentukan predikat
if nilai_akhir >= 90:
predikat = "A"
keterangan_nilai = "Sangat Baik"
elif nilai_akhir >= 80:
predikat = "B"
keterangan_nilai = "Baik"
elif nilai_akhir >= 70:
predikat = "C"
keterangan_nilai = "Cukup"
elif nilai_akhir >= 60:
predikat = "D"
keterangan_nilai = "Kurang"
else:
predikat = "E"
keterangan_nilai = "Sangat Kurang"
# Tentukan status kelulusan
# Syarat lulus: nilai akhir >= 75 DAN kehadiran >= 75%
if nilai_akhir >= 90 and pct_hadir >= 75:
status = "✨ LULUS SEMPURNA"
pesan = "Luar biasa! Pertahankan prestasimu."
elif nilai_akhir >= 75 and pct_hadir >= 75:
status = "✅ LULUS"
pesan = "Selamat! Kamu memenuhi semua syarat kelulusan."
elif nilai_akhir >= 60 or pct_hadir < 75:
status = "⚠️ REMEDI"
if nilai_akhir < 75 and pct_hadir < 75:
pesan = "Nilai dan kehadiran perlu diperbaiki."
elif nilai_akhir < 75:
pesan = "Nilai akhir belum mencukupi. Ikuti remedi."
else:
pesan = "Kehadiran di bawah 75%. Harap melapor ke guru BK."
else:
status = "❌ TIDAK LULUS"
pesan = "Silakan temui wali kelas untuk tindak lanjut."
# Tampilkan hasil
print()
print("=" * 46)
print(f"{'HASIL EVALUASI SEMESTER':^46}")
print(f"{'SMK Nusantara':^46}")
print("=" * 46)
print(f" Nama : {nama.title()}")
print(f" Nilai Tugas : {nilai_tugas:.1f} (bobot 30%)")
print(f" Nilai UTS : {nilai_uts:.1f} (bobot 35%)")
print(f" Nilai UAS : {nilai_uas:.1f} (bobot 35%)")
print(f" Kehadiran : {pct_hadir:.1f}%")
print("-" * 46)
print(f" Nilai Akhir : {nilai_akhir:.2f}")
print(f" Predikat : {predikat} — {keterangan_nilai}")
print("-" * 46)
print(f" STATUS : {status}")
print(f" Catatan : {pesan}")
print("=" * 46)
Coba jalankan dengan data siswa yang berbeda dan perhatikan bagaimana statusnya berubah otomatis!
Contoh output untuk Andi (nilai 92, hadir 95%):
==============================================
HASIL EVALUASI SEMESTER
SMK Nusantara
==============================================
Nama : Andi Saputra
Nilai Tugas : 88.0 (bobot 30%)
Nilai UTS : 90.0 (bobot 35%)
Nilai UAS : 95.0 (bobot 35%)
Kehadiran : 95.0%
--------------------------------------------
Nilai Akhir : 91.40
Predikat : A — Sangat Baik
--------------------------------------------
STATUS : ✨ LULUS SEMPURNA
Catatan : Luar biasa! Pertahankan prestasimu.
==============================================
Contoh output untuk Citra (nilai 63, hadir 68%):
==============================================
HASIL EVALUASI SEMESTER
SMK Nusantara
==============================================
Nama : Citra Dewi
Nilai Tugas : 60.0 (bobot 30%)
Nilai UTS : 65.0 (bobot 35%)
Nilai UAS : 63.0 (bobot 35%)
Kehadiran : 68.0%
--------------------------------------------
Nilai Akhir : 62.80
Predikat : D — Kurang
--------------------------------------------
STATUS : ⚠️ REMEDI
Catatan : Nilai dan kehadiran perlu diperbaiki.
==============================================
If Bersarang (Nested If)
if juga bisa ditulis di dalam if lain. Ini disebut nested if atau if bersarang. Berguna saat kamu perlu mengecek kondisi yang lebih spesifik setelah kondisi pertama terpenuhi.
nilai = 85
ekskul = "OSIS"
if nilai >= 75:
print("Nilai memenuhi syarat.")
# Cek kondisi tambahan di dalam if pertama
if ekskul == "OSIS":
print("Kamu juga aktif di OSIS — kandidat siswa berprestasi!")
else:
print("Pertimbangkan untuk aktif di kegiatan ekstrakurikuler.")
else:
print("Fokus dulu meningkatkan nilai akademik.")
Output:
Nilai memenuhi syarat.
Kamu juga aktif di OSIS — kandidat siswa berprestasi!
💡 Tips: Jangan terlalu banyak membuat nested if yang dalam. Kalau sampai 4–5 level ke dalam, kodenya akan sulit dibaca. Cari cara untuk menyederhanakannya dengan
and/oratau memecah logika ke fungsi terpisah.
If Tanpa Else
else itu opsional. Kalau kamu tidak butuh aksi apapun ketika kondisi False, cukup tulis if saja:
nilai = 95
nilai_max = 90 # nilai tertinggi sebelumnya
# Hanya tampilkan pesan kalau ada rekor baru
if nilai > nilai_max:
print(f"🎉 Rekor baru! Nilai {nilai} melampaui rekor sebelumnya {nilai_max}.")
# Program lanjut tanpa else
print("Nilai tersimpan.")
Output:
🎉 Rekor baru! Nilai 95 melampaui rekor sebelumnya 90.
Nilai tersimpan.
Latihan: Cek Syarat Pendaftaran Beasiswa
Buat file baru bernama cek_beasiswa.py. Program ini mengecek apakah seorang siswa memenuhi syarat mendaftar beasiswa sekolah.
Syarat beasiswa:
- Nilai akhir minimal 80
- Kehadiran minimal 85%
- Tidak pernah mendapat surat peringatan (SP)
# ================================
# Cek Syarat Beasiswa Sekolah
# ================================
print("=== CEK SYARAT BEASISWA ===")
nama = input("Nama siswa : ")
nilai_akhir = float(input("Nilai akhir semester: "))
pct_hadir = float(input("Persentase kehadiran: "))
dapat_sp = input("Pernah dapat SP? (ya/tidak): ").lower()
punya_sp = (dapat_sp == "ya") # konversi ke Boolean
# Cek kelayakan
print()
print(f"{'Hasil Pengecekan untuk ' + nama.title():}")
print("-" * 40)
if nilai_akhir >= 80:
print(f" Nilai {nilai_akhir:.1f} ✅ Memenuhi syarat (min. 80)")
else:
print(f" Nilai {nilai_akhir:.1f} ❌ Tidak memenuhi (min. 80)")
if pct_hadir >= 85:
print(f" Hadir {pct_hadir:.1f}% ✅ Memenuhi syarat (min. 85%)")
else:
print(f" Hadir {pct_hadir:.1f}% ❌ Tidak memenuhi (min. 85%)")
if not punya_sp:
print(f" SP ✅ Tidak pernah mendapat SP")
else:
print(f" SP ❌ Pernah mendapat SP")
print("-" * 40)
# Keputusan akhir
if nilai_akhir >= 80 and pct_hadir >= 85 and not punya_sp:
print(" STATUS: 🎉 MEMENUHI SYARAT BEASISWA!")
print(" Segera lengkapi berkas ke bagian TU.")
else:
print(" STATUS: Belum memenuhi semua syarat beasiswa.")
print(" Tingkatkan prestasi untuk periode berikutnya.")
print("=" * 40)
Coba jalankan dengan berbagai kombinasi data — ada yang lolos, ada yang tidak — dan perhatikan bagaimana setiap kondisi diperiksa satu per satu.
Rangkuman
| Konsep | Penjelasan | Contoh |
|---|---|---|
if | Jalankan kode jika kondisi True | if nilai >= 75: |
else | Jalankan jika semua kondisi di atas False | else: |
elif | Kondisi alternatif tambahan | elif nilai >= 60: |
| Indentasi | Wajib 4 spasi / 1 Tab di dalam blok | print("Lulus") |
== vs = | == membandingkan, = mengisi variabel | nilai == 75 |
and | Kedua kondisi harus True | nilai >= 75 and hadir >= 75 |
or | Salah satu kondisi True sudah cukup | ketua or wakil |
not | Membalik kondisi | not punya_sp |
| Nested if | if di dalam if untuk kondisi berlapis | Lihat contoh di atas |
Artikel Selanjutnya
Di artikel berikutnya kita akan belajar Loop — cara Python mengulangi instruksi yang sama secara otomatis. Dengan loop, kita bisa bikin program absensi yang memanggil nama seluruh siswa satu per satu tanpa harus menulis print berkali-kali!
Ada yang masih bingung soal elif, and/or, atau indentasi? Tulis pertanyaanmu di komentar ya! 💬
Artikel ini merupakan bagian dari seri “Belajar Python untuk Sekolah” — panduan coding Python bergaya santai untuk pelajar SMA/SMK/MA Indonesia.
Tinggalkan Balasan