Lewati ke konten
Puguh Sulistyo Pambudi Freelance Web Developer | Guru SMK
  • Beranda
  • Profil Saya
  • Belajar
    • Vibecoding
    • Kecerdasan Buatan
    • Koding
    • Python
    • WordPress
    • Internet of Things
Cari

Tekan Enter untuk melihat semua hasil · Esc untuk menutup

Beranda / Python / If-Else — Biar Python Bisa Ambil Keputusan Sendiri
Python

If-Else — Biar Python Bisa Ambil Keputusan Sendiri

Puguh Sulistyo Pambudi
Puguh Sulistyo Pambudi Mei 19, 2026 · 9 menit baca · 2
If-Else — Biar Python Bisa Ambil Keputusan Sendiri
Daftar Isi
  1. 1 Analogi: Piket Pagi di Sekolah
  2. 2 Struktur Dasar: if dan else
  3. 3 Operator Perbandingan — Alat Pembuat Kondisi
  4. 4 Tambah Pilihan dengan elif
  5. 5 Operator Logika: and, or, not
  6. and — Kedua kondisi harus True
  7. or — Salah satu kondisi cukup
  8. not — Membalik kondisi
  9. 6 Studi Kasus: Sistem Penentu Kelulusan Otomatis
  10. 7 If Bersarang (Nested If)
  11. 8 If Tanpa Else
  12. 9 Latihan: Cek Syarat Pendaftaran Beasiswa
  13. 10 Rangkuman
  14. 11 Artikel Selanjutnya

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.

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.

Flowchart struktur If 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) → lewati
  • nilai >= 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.

Program penentu kelulusan
# =============================================
# 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/or atau 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

KonsepPenjelasanContoh
ifJalankan kode jika kondisi Trueif nilai >= 75:
elseJalankan jika semua kondisi di atas Falseelse:
elifKondisi alternatif tambahanelif nilai >= 60:
IndentasiWajib 4 spasi / 1 Tab di dalam blokprint("Lulus")
== vs === membandingkan, = mengisi variabelnilai == 75
andKedua kondisi harus Truenilai >= 75 and hadir >= 75
orSalah satu kondisi True sudah cukupketua or wakil
notMembalik kondisinot punya_sp
Nested ifif di dalam if untuk kondisi berlapisLihat 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.

#Belajar Python #Koding SMK
Puguh Sulistyo Pambudi

Ditulis oleh

Puguh Sulistyo Pambudi
Bagikan
← Sebelumnya Operasi Matematika dan String — Python Bisa Jadi Kalkulator Sekolah!
Selanjutnya → Loop — Biar Gak Capek Ngoding Hal yang Sama Berulang!

Tinggalkan Balasan Batalkan balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Artikel Populer

  1. Anatomi Prompt yang Efektif — 5 Komponen Kunci yang Wajib Kamu Tahu Mei 18, 2026
  2. Mengenal IoT Secara Fundamental: Inovasi Smart Farming September 24, 2026
  3. Zero-Shot, One-Shot, Few-Shot — Teknik Dasar Prompting yang Wajib Dikuasai Mei 18, 2026
  4. Role Prompting — Cara Kasih AI ‘Karakter’ yang Tepat untuk Hasil Maksimal Mei 18, 2026
  5. Chain of Thought Prompting — Cara Bikin AI Berpikir Lebih Dalam dan Akurat Mei 18, 2026

Kategori

  • Kecerdasan Buatan 16
  • Python 9
  • Koding 8
  • Vibecoding 2
  • Aplikasi Pendidikan 2
  • Wordpress 1
  • Internet of Things 1
  • Uncategorized 0

© 2026 Puguh Sulistyo Pambudi — Dibuat dengan ❤

Powered by
Necessary cookies enable essential site features like secure log-ins and consent preference adjustments. They do not store personal data.
None
Functional cookies support features like content sharing on social media, collecting feedback, and enabling third-party tools.
None
Analytical cookies track visitor interactions, providing insights on metrics like visitor count, bounce rate, and traffic sources.
None
Advertisement cookies deliver personalized ads based on your previous visits and analyze the effectiveness of ad campaigns.
None
Unclassified cookies are cookies that we are in the process of classifying, together with the providers of individual cookies.
None
Powered by