Bayangkan kamu diminta menuliskan nama seluruh siswa di kelas — 32 orang — ke papan tulis satu per satu. Kamu bisa menulisnya 32 kali. Tapi kalau kamu punya asisten yang bisa melakukannya otomatis sambil kamu duduk santai, kenapa tidak?
Itulah fungsi loop di Python.
Loop adalah cara memerintahkan Python untuk mengulang blok kode yang sama berkali-kali — entah itu 5 kali, 32 kali, atau bahkan sampai kondisi tertentu terpenuhi. Tanpa loop, kita harus menulis perintah yang sama secara manual berulang-ulang. Dengan loop, cukup tulis sekali, Python yang kerja keras.
Di artikel ini kita akan belajar dua jenis loop utama di Python: for loop dan while loop — lengkap dengan kasus nyata di sekolah.
Masalah Tanpa Loop
Sebelum masuk ke loop, lihat dulu kenapa loop itu penting. Misalnya kita mau mencetak nomor urut absensi dari 1 sampai 5:
# Tanpa loop — harus tulis satu per satu
print("Nomor absen 1")
print("Nomor absen 2")
print("Nomor absen 3")
print("Nomor absen 4")
print("Nomor absen 5")
Untuk 5 siswa masih oke. Tapi bagaimana kalau 32 siswa? Atau 300 siswa di seluruh angkatan? Kamu harus menulis print ratusan kali — tidak praktis sama sekali.
Dengan loop, cukup begini:
# Dengan loop — ringkas, fleksibel
for i in range(1, 33):
print(f"Nomor absen {i}")
Dua baris kode ini menghasilkan output yang sama persis dengan 32 baris print manual. Lebih singkat, lebih mudah diubah, dan jauh lebih elegan.
For Loop — Kalau Sudah Tahu Berapa Kali
for loop digunakan ketika kamu sudah tahu berapa kali pengulangan akan terjadi — misalnya untuk setiap item dalam sebuah daftar, atau untuk angka 1 sampai 32.

Format dasarnya:
for variabel_sementara in sumber_data:
# kode yang diulang
Iterasi Langsung dari Daftar
Cara paling umum menggunakan for adalah iterasi langsung dari sebuah list (kita akan belajar list lebih dalam di artikel berikutnya):
daftar_siswa = ["Andi", "Budi", "Citra", "Deni", "Eka"]
for siswa in daftar_siswa:
print(f"Hadir: {siswa}")
Output:
Hadir: Andi
Hadir: Budi
Hadir: Citra
Hadir: Deni
Hadir: Eka
Di setiap putaran loop, variabel siswa secara otomatis berisi nama berikutnya dari daftar. Setelah nama terakhir selesai, loop berhenti dengan sendirinya — tidak perlu perintah stop secara manual.
Fungsi range() — Teman Setia For Loop
Kalau kamu tidak punya daftar tapi butuh mengulang sejumlah kali tertentu, gunakan range(). Fungsi ini menghasilkan urutan angka secara otomatis.

Ada tiga cara memakai range():
# 1. range(stop) — mulai dari 0
for i in range(5):
print(i) # 0 1 2 3 4
# 2. range(start, stop) — tentukan angka awal
for i in range(1, 6):
print(i) # 1 2 3 4 5
# 3. range(start, stop, step) — tentukan loncat berapa
for i in range(1, 33, 2):
print(i) # 1 3 5 7 ... 31 (nomor ganjil)
💡 Perhatikan:
range(1, 6)menghasilkan angka 1 sampai 5, bukan sampai 6. Angkastoptidak ikut masuk. Jadi untuk nomor absen 1 sampai 32, tulisnyarange(1, 33).
Contoh praktis — mencetak nomor urut absensi:
print("=== DAFTAR ABSENSI KELAS X TKJ 1 ===")
for nomor in range(1, 33):
print(f" {nomor:>2}. ________________________________")
print("=====================================")
Output:
=== DAFTAR ABSENSI KELAS X TKJ 1 ===
1. ________________________________
2. ________________________________
...
32. ________________________________
=====================================
Format {nomor:>2} membuat angka rata kanan dalam lebar 2 karakter, jadi nomor 1–9 tampil rapi sejajar dengan 10–32.
enumerate() — Dapat Nomor Urut Sekaligus
Kalau kamu mau mengiterasi daftar tapi juga butuh nomor urutnya, ada fungsi spesial bernama enumerate(). Ini sangat berguna untuk absensi:
daftar_siswa = ["Andi", "Budi", "Citra", "Deni", "Eka"]
for nomor, nama in enumerate(daftar_siswa, start=1):
print(f" {nomor:>2}. {nama}")
Output:
1. Andi
2. Budi
3. Citra
4. Deni
5. Eka
Parameter start=1 berarti hitungan nomor urut dimulai dari 1 (bukan 0). Tanpa enumerate, kamu harus mengelola variabel penghitung terpisah — jauh lebih ribet.
While Loop — Kalau Tidak Tahu Berapa Kali
while loop berbeda dari for. Digunakan ketika kamu tidak tahu persis berapa kali akan berulang — loop terus berjalan selama kondisi tertentu masih True, dan berhenti begitu kondisinya menjadi False.

Format dasarnya:
while kondisi:
# kode yang diulang selama kondisi True
Contoh sederhana:
hitungan = 1
while hitungan <= 5:
print(f"Pengulangan ke-{hitungan}")
hitungan += 1 # wajib! biar loop tidak jalan selamanya
print("Selesai!")
Output:
Pengulangan ke-1
Pengulangan ke-2
Pengulangan ke-3
Pengulangan ke-4
Pengulangan ke-5
Selesai!
⚠️ Hati-hati infinite loop! Kalau kamu lupa menambah nilai
hitungan, kondisihitungan <= 5tidak pernah jadiFalse, dan program akan jalan selamanya — atau sampai kamu paksa berhenti denganCtrl + C. Selalu pastikan ada sesuatu di dalamwhileyang pada akhirnya akan membuat kondisinyaFalse.
While untuk Validasi Input
while sangat cocok untuk memastikan pengguna memasukkan data yang benar:
# Paksa pengguna masukkan nilai yang valid (0–100)
while True:
nilai = float(input("Masukkan nilai (0-100): "))
if 0 <= nilai <= 100:
break # nilai valid, keluar dari loop
print("❌ Nilai harus antara 0 dan 100. Coba lagi!")
print(f"✅ Nilai {nilai} berhasil disimpan.")
Program ini tidak akan lanjut sampai pengguna memasukkan angka yang valid. Sangat berguna untuk aplikasi input data siswa agar tidak ada nilai negatif atau di atas 100 yang masuk ke sistem.
break dan continue — Kendalikan Jalannya Loop
Dua kata kunci ini memberi kamu kontrol lebih atas loop yang sedang berjalan.
break — Berhenti Seketika
break menghentikan loop sepenuhnya, tidak peduli apakah loop belum selesai:
daftar_siswa = ["Andi", "Budi", "Citra", "Deni", "Eka"]
cari = "Citra"
print(f"Mencari {cari} dalam daftar...")
for siswa in daftar_siswa:
if siswa == cari:
print(f"✅ Ditemukan: {siswa}!")
break # langsung berhenti, tidak perlu cek sisa daftar
print(f" Bukan {siswa}, lanjut...")
Output:
Mencari Citra dalam daftar...
Bukan Andi, lanjut...
Bukan Budi, lanjut...
✅ Ditemukan: Citra!
Setelah break, loop berhenti total. Deni dan Eka tidak sempat dicek karena tidak perlu.
continue — Lewati, Tapi Lanjut
continue melewati sisa kode di iterasi sekarang dan langsung lompat ke iterasi berikutnya. Loop tidak berhenti, hanya satu putaran yang dilewati:
nilai_siswa = [90, 55, 80, 40, 75, 60, 30]
print("Siswa yang perlu remedi:")
for nilai in nilai_siswa:
if nilai >= 75:
continue # skip nilai yang lulus
print(f" Nilai {nilai} — perlu remedi")
Output:
Siswa yang perlu remedi:
Nilai 55 — perlu remedi
Nilai 40 — perlu remedi
Nilai 30 — perlu remedi
Nilai 90, 80, dan 75 dilewati (karena continue), hanya nilai di bawah 75 yang dicetak.
Studi Kasus: Program Absensi Digital
Bu Aminah guru PKN di SMK Nusantara selalu mengabsen siswa di awal pelajaran. Selama ini beliau memanggil nama satu per satu sambil menulis di buku. Dengan Python, proses ini bisa dibuat jauh lebih terstruktur — dan datanya langsung tercatat.
# ============================================
# Program Absensi Digital
# Bu Aminah — PKN Kelas X TKJ 1
# SMK Nusantara
# ============================================
daftar_siswa = [
"Andi Saputra", "Budi Santoso", "Citra Dewi",
"Deni Pratama", "Eka Fitriani", "Fajar Nugroho",
"Gita Permata", "Hendra Wijaya", "Indah Lestari",
"Joko Susilo"
# ... tambahkan sampai 32 siswa
]
hadir = []
absen = []
izin = []
print("=" * 50)
print(f"{'ABSENSI KELAS X TKJ 1':^50}")
print(f"{'SMK Nusantara':^50}")
print("=" * 50)
print("Keterangan: H = Hadir | A = Absen | I = Izin")
print("-" * 50)
for nomor, nama in enumerate(daftar_siswa, start=1):
while True:
status = input(f" {nomor:>2}. {nama:<20} [H/A/I]: ").upper().strip()
if status in ["H", "A", "I"]:
break
print(" ❌ Masukkan H, A, atau I saja.")
if status == "H":
hadir.append(nama)
print(f" ✅ Tercatat: Hadir")
elif status == "A":
absen.append(nama)
print(f" ❌ Tercatat: Absen")
else:
izin.append(nama)
print(f" 📋 Tercatat: Izin")
# Rekap akhir
total = len(daftar_siswa)
print()
print("=" * 50)
print(f"{'REKAP ABSENSI':^50}")
print("=" * 50)
print(f" Total Siswa : {total}")
print(f" Hadir : {len(hadir)} siswa ({len(hadir)/total*100:.1f}%)")
print(f" Absen : {len(absen)} siswa ({len(absen)/total*100:.1f}%)")
print(f" Izin : {len(izin)} siswa ({len(izin)/total*100:.1f}%)")
if absen:
print(f"\n Nama yang absen:")
for nama in absen:
print(f" - {nama}")
print("=" * 50)
Contoh output saat dijalankan:
==================================================
ABSENSI KELAS X TKJ 1
SMK Nusantara
==================================================
Keterangan: H = Hadir | A = Absen | I = Izin
--------------------------------------------------
1. Andi Saputra [H/A/I]: H
✅ Tercatat: Hadir
2. Budi Santoso [H/A/I]: A
❌ Tercatat: Absen
3. Citra Dewi [H/A/I]: xyz
❌ Masukkan H, A, atau I saja.
3. Citra Dewi [H/A/I]: H
✅ Tercatat: Hadir
...
==================================================
REKAP ABSENSI
==================================================
Total Siswa : 10
Hadir : 8 siswa (80.0%)
Absen : 1 siswa (10.0%)
Izin : 1 siswa (10.0%)
Nama yang absen:
- Budi Santoso
==================================================
Program ini menggabungkan for loop untuk iterasi daftar siswa, while loop untuk validasi input, if-elif-else dari artikel sebelumnya, enumerate() untuk nomor urut, dan break untuk keluar dari validasi begitu input benar.
Loop di Dalam Loop (Nested Loop)
Loop juga bisa bersarang — loop di dalam loop. Ini berguna saat kamu butuh mengolah data dua dimensi, misalnya jadwal pelajaran berdasarkan hari dan jam:
hari_sekolah = ["Senin", "Selasa", "Rabu"]
jam_pelajaran = [1, 2, 3, 4, 5, 6]
for hari in hari_sekolah:
print(f"\n📅 {hari}:")
for jam in jam_pelajaran:
print(f" Jam ke-{jam}: __________________")
Output:
📅 Senin:
Jam ke-1: __________________
Jam ke-2: __________________
...
Jam ke-6: __________________
📅 Selasa:
Jam ke-1: __________________
...
Untuk setiap hari, semua jam diiterasi. Loop luar jalan 3 kali (3 hari), loop dalam jalan 6 kali (6 jam) — total 18 baris tercetak otomatis.
Latihan: Rekap Nilai Kelas
Buat file baru bernama rekap_nilai.py. Program ini akan menerima input nilai dari pengguna, lalu menampilkan rekap lengkapnya:
# ====================================
# Program Rekap Nilai Kelas
# ====================================
jumlah_siswa = int(input("Jumlah siswa di kelas: "))
mata_pelajaran = input("Mata pelajaran : ")
daftar_nilai = []
print(f"\nMasukkan nilai {mata_pelajaran} untuk {jumlah_siswa} siswa:")
print("-" * 40)
for i in range(1, jumlah_siswa + 1):
while True:
nilai = float(input(f" Nilai siswa ke-{i:>2}: "))
if 0 <= nilai <= 100:
break
print(" ❌ Nilai harus antara 0 dan 100!")
daftar_nilai.append(nilai)
# Hitung statistik
total = sum(daftar_nilai)
rata_rata = total / jumlah_siswa
nilai_max = max(daftar_nilai)
nilai_min = min(daftar_nilai)
# Hitung jumlah lulus/remedi
lulus = 0
remedi = 0
for nilai in daftar_nilai:
if nilai >= 75:
lulus += 1
else:
remedi += 1
# Tampilkan rekap
print()
print("=" * 40)
print(f"{'REKAP NILAI ' + mata_pelajaran.upper():^40}")
print("=" * 40)
print(f" Jumlah siswa : {jumlah_siswa}")
print(f" Rata-rata : {rata_rata:.2f}")
print(f" Nilai tertinggi : {nilai_max:.0f}")
print(f" Nilai terendah : {nilai_min:.0f}")
print("-" * 40)
print(f" Lulus (≥75) : {lulus} siswa ({lulus/jumlah_siswa*100:.1f}%)")
print(f" Remedi (<75) : {remedi} siswa ({remedi/jumlah_siswa*100:.1f}%)")
print("=" * 40)
Coba jalankan dengan 5 sampai 10 data nilai dan perhatikan cara loop mengumpulkan semua input secara otomatis!
Rangkuman
| Konsep | Kapan Dipakai | Contoh |
|---|---|---|
for | Jumlah pengulangan sudah diketahui | for siswa in daftar: |
while | Pengulangan berdasarkan kondisi | while jawaban != "stop": |
range(n) | Angka 0 sampai n-1 | range(32) → 0..31 |
range(a, b) | Angka a sampai b-1 | range(1, 33) → 1..32 |
range(a, b, s) | Loncat s angka | range(0, 100, 10) |
enumerate() | Iterasi + nomor urut sekaligus | for i, nama in enumerate(lst, 1): |
break | Berhenti dari loop seketika | Saat target ditemukan |
continue | Lewati iterasi ini, lanjut | Saat kondisi tertentu diabaikan |
| Nested loop | Loop di dalam loop | Jadwal hari × jam |
Artikel Selanjutnya
Di artikel berikutnya kita akan belajar List — struktur data penting di Python yang memungkinkan kita menyimpan banyak nilai dalam satu variabel. Kita akan terapkan langsung untuk menyimpan seluruh nilai siswa dan mencari nilai tertinggi di kelas secara otomatis!
Ada yang masih bingung soal for vs while, atau soal break dan continue? Tinggalkan pertanyaan di komentar! 💬
Artikel ini merupakan bagian dari seri “Belajar Python untuk Sekolah” — panduan coding Python bergaya santai untuk pelajar SMA/SMK/MA Indonesia.
Tinggalkan Balasan