pythonloopforPemula5 mnt baca

For Loop Lanjutan di Python

Naik level dari for dasar: range(), enumerate(), zip(), break/continue, dan nested loop untuk mengolah data berpasangan.

Analogi: absen kelas satu per satu

Bayangkan guru mengabsen 30 murid. Ia tidak perlu menebak berapa murid yang ada, ia punya daftarnya dan memanggil satu per satu sampai habis. Itulah for: untuk setiap item dalam kumpulan yang sudah jelas, lakukan sesuatu.

Modul ini membahas senjata lanjutan dari for: cara membuat urutan angka dengan range(), melacak nomor urut dengan enumerate(), menggabungkan dua list dengan zip(), mengendalikan loop dengan break/continue, dan loop di dalam loop.

Kenapa konsep ini ada?

Loop dasar for nama in daftar: cukup untuk banyak hal, tapi data nyata jarang sesederhana itu. Kadang kamu butuh nomor barisnya (baris ke berapa yang error?), kadang dua kolom harus diproses berpasangan (nama dan harga), kadang kamu ingin berhenti lebih awal saat sudah ketemu yang dicari (hemat waktu untuk data besar). Fitur-fitur di modul ini lahir untuk kebutuhan praktis itu.

range(): membuat urutan angka

python
# range(stop): 0 sampai stop-1
for i in range(3):
    print(i)  # 0, 1, 2

# range(start, stop)
for i in range(2, 5):
    print(i)  # 2, 3, 4

# range(start, stop, step)
for i in range(0, 10, 3):
    print(i)  # 0, 3, 6, 9

Catatan teknis: range() itu malas (lazy): ia tidak membuat list raksasa di memori, melainkan menghasilkan angka satu per satu. range(1000000) tetap ringan, sedangkan list(range(1000000)) memakan memori besar.

enumerate(): item plus nomor urutnya

python
buah = ["apel", "mangga", "jeruk"]

for nomor, nama in enumerate(buah):
    print(nomor, nama)
# 0 apel
# 1 mangga
# 2 jeruk

# mulai dari 1 kalau mau
for nomor, nama in enumerate(buah, start=1):
    print(nomor, nama)

zip(): menggabungkan dua list berpasangan

python
nama = ["Rina", "Budi", "Sari"]
nilai = [85, 70, 92]

for n, s in zip(nama, nilai):
    print(n, "dapat nilai", s)
# Rina dapat nilai 85
# Budi dapat nilai 70
# Sari dapat nilai 92

break dan continue: mengendalikan loop

python
# break: berhenti total saat ketemu yang dicari
for angka in [3, 7, 9, 12, 15]:
    if angka > 10:
        print("Ketemu:", angka)
        break
    print("cek", angka)

# continue: lewati iterasi ini, lanjut ke berikutnya
for angka in [3, -2, 7, -5, 9]:
    if angka < 0:
        continue  # lewati angka negatif
    print("proses", angka)

Nested loop: loop di dalam loop

python
# tabel perkalian kecil
for baris in range(1, 4):
    for kolom in range(1, 4):
        print(baris, "x", kolom, "=", baris * kolom)

Contoh 1: laporan penjualan berpasangan

python
produk = ["Kopi", "Teh", "Roti"]
harga = [15000, 8000, 12000]
terjual = [20, 35, 12]

print("LAPORAN HARIAN")
for i, (p, h, t) in enumerate(zip(produk, harga, terjual), start=1):
    omzet = h * t
    print(i, p, "| terjual:", t, "| omzet: Rp", omzet)

Satu loop memproses tiga list sekaligus, lengkap dengan nomor urut. Tanpa zip dan enumerate, kode ini butuh index manual yang rawan salah.

Contoh 2: cari data rusak lalu berhenti

python
data_umur = [25, 30, -5, 22, 41]  # ada satu yang mustahil

for posisi, umur in enumerate(data_umur):
    if umur < 0:
        print("Data rusak di baris", posisi, ":", umur)
        break  # sudah ketemu, tidak perlu cek sisanya
else:
    print("Semua data bersih")

Catatan teknis: for punya klausa else yang jarang diketahui: blok else jalan kalau loop selesai tanpa break. Cocok untuk pola "cari sesuatu, kalau tidak ketemu lakukan X".

Kesalahan umum pemula

SALAH: mengubah list saat diiterasi

python
angka = [1, 2, 3, 4]
for a in angka:
    if a % 2 == 0:
        angka.remove(a)  # item terlewat, hasil tidak terduga!

BENAR: buat list baru atau iterasi salinannya

python
angka = [1, 2, 3, 4]
ganjil = [a for a in angka if a % 2 == 1]
print(ganjil)  # [1, 3]

SALAH: mengira range(5) berisi angka 1 sampai 5

python
for i in range(5):
    print(i)  # 0,1,2,3,4  BUKAN 1,2,3,4,5

BENAR: ingat stop itu eksklusif, mulai dari 1 bila perlu

python
for i in range(1, 6):
    print(i)  # 1,2,3,4,5

SALAH: break/continue di indentasi yang salah

python
for a in [1, 2, 3]:
    if a == 2:
        print("dua")
break  # IndentationError: di luar loop!

BENAR: break harus di dalam blok loop

python
for a in [1, 2, 3]:
    if a == 2:
        print("dua")
        break

Tantangan

Laporan Stok Berpasangan

Diberi dua list: nama barang dan jumlah stok. Pakai zip dan enumerate untuk mencetak nomor, nama, dan status ('Stok aman' jika >= 10, 'Stok menipis!' jika < 10). Lewati barang yang stoknya 0 dengan continue.