pythonloopfungsiPemula4 mnt baca

Perulangan dan Fungsi

for, while, range, plus def untuk membungkus logika jadi fungsi yang bisa dipakai ulang.

Loop dan fungsi: dua senjata melawan pengulangan

Bayangkan kamu kasir warung yang harus menghitung total untuk 200 struk belanja. Kamu tidak akan menulis rumus yang sama 200 kali di kertas, kamu akan memakai mesin kasir: masukkan daftar harga, tekan tombol, semua dihitung. Perulangan (loop) dan fungsi adalah "mesin kasir" di dalam kode: loop menjalankan instruksi yang sama untuk banyak data, sedangkan fungsi membungkus instruksi jadi "tombol" yang bisa ditekan kapan saja.

Kenapa dua konsep ini ada? Jawabannya satu kata: pengulangan. Manusia buruk dalam pekerjaan berulang (cepat bosan, gampang salah ketik), komputer justru hebat dalam hal itu. Hampir semua analisis data intinya adalah "lakukan hal yang sama ke tiap baris data", mustahil ditulis per baris untuk 10.000 baris. Fungsi lahir dari masalah kedua: tanpa fungsi, logika yang dipakai di lima tempat disalin lima kali, dan satu perbaikan berarti mengedit lima tempat (dijamin ada yang lupa).

Contoh 1: for yang sederhana

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

for artinya "untuk setiap item dalam kumpulan ini, lakukan ini". range(n) menghasilkan angka 0 sampai n-1. Variasi yang sering dipakai:

python
for i in range(1, 6):      # mulai dari 1 sampai 5
    print(i)
for i in range(0, 10, 2):  # 0, 2, 4, 6, 8 (loncat 2)
    print(i)

Dan loop paling natural di Python: jalan langsung di atas list, tanpa perlu indeks.

python
buah = ["apel", "mangga", "jeruk"]
for b in buah:
    print("Saya suka", b)

Contoh 2: loop di atas data penjualan (lebih nyata)

Inilah loop dalam wujud aslinya: operasi yang sama diterapkan ke banyak baris data.

python
# Data penjualan hari ini: (nama produk, harga, jumlah terjual)
penjualan = [
    ("Kopi Tubruk", 15000, 24),
    ("Teh Manis", 8000, 31),
    ("Indomie", 12000, 18),
]

omzet = 0
for nama, harga, terjual in penjualan:
    subtotal = harga * terjual
    omzet += subtotal
    print(f"{nama}: {terjual} x Rp{harga:,} = Rp{subtotal:,}")

print("Total omzet: Rp", f"{omzet:,}")

Pola dasarnya: siapkan omzet = 0 sebelum loop (accumulator), tiap putaran menambah subtotal. Pola "siapkan penampung, loop, pakai hasil" ini muncul di hampir semua agregasi data.

while: ulangi selama kondisi masih benar

Kalau for dipakai saat jumlah putaran sudah jelas, while dipakai saat putarannya belum tahu: "ulangi terus sampai sesuatu berubah". Analoginya seperti mengisi ember: kamu tidak tahu persis berapa gayung yang dibutuhkan, kamu berhenti saat ember penuh.

python
saldo = 100000
while saldo > 0:
    print("Sisa saldo:", saldo)
    saldo -= 30000   # tiap putaran kondisi bergerak mendekati False
print("Saldo habis.")

Syarat mutlak while: kondisi harus bisa menjadi False, kalau tidak program terjebak selamanya (infinite loop). Setiap loop while wajib punya baris yang mengubah kondisi ke arah berhenti.

Catatan teknis: break menghentikan loop secara paksa, continue melompat ke putaran berikutnya. Keduanya berguna, tapi loop yang berhenti "dengan sendirinya" lewat kondisi jauh lebih mudah dipahami.

Fungsi: resep masakan yang bisa dipakai ulang

Kalau loop menjawab "bagaimana mengulang", fungsi menjawab "bagaimana tidak menulis ulang". Analoginya resep masakan: tulis sekali, pakai berkali-kali dengan bahan berbeda. Parameter adalah bahan yang bisa diganti, return adalah hidangan hasilnya.

python
def sapa(nama):
    return "Halo, " + nama + "!"

print(sapa("Dina"))  # Halo, Dina!
print(sapa("Bima"))  # Halo, Bima!

Bedanya: print hanya menampilkan (hasilnya hilang), return mengembalikan nilai untuk dipakai lanjut. Fungsi boleh punya nilai default dan mengembalikan lebih dari satu nilai:

python
def hitung_diskon(harga, persen=10):
    potongan = harga * persen / 100
    return harga - potongan, potongan

akhir, hemat = hitung_diskon(200000)
print(akhir, hemat)            # 180000.0 20000.0
print(hitung_diskon(200000, 20))  # persen bisa diganti

Contoh 2: fungsi dipakai di dalam loop (pola data analyst)

Kombinasi loop dan fungsi adalah pola kerja sehari-hari analyst: fungsi berisi aturan, loop menerapkannya ke tiap baris data.

python
def kategori_pelanggan(total):
    """Beri label segmen berdasarkan total belanja."""
    if total >= 1000000:
        return "Platinum"
    elif total >= 500000:
        return "Gold"
    return "Silver"

pelanggan = [("Andi", 1250000), ("Budi", 750000), ("Cici", 200000)]

for nama, total in pelanggan:
    segmen = kategori_pelanggan(total)
    print(f"{nama}: Rp{total:,} -> {segmen}")

Aturan segmentasi tertulis sekali di fungsi, loop hanya memanggilnya. Kalau aturan berubah, kamu mengedit satu tempat saja.

Catatan teknis: """teks""" tepat di bawah def disebut docstring: dokumentasi resmi fungsi. Menuliskannya bikin fungsi mudah dipakai orang lain (dan dirimu sendiri enam bulan dari sekarang).

Kesalahan umum pemula

SALAH: Loop while yang kondisinya tidak pernah berubah (infinite loop).

python
saldo = 100000
while saldo > 0:
    print(saldo)   # saldo tidak pernah berkurang: jalan selamanya!

BENAR: Selalu ada baris yang mengubah kondisi ke arah berhenti:

python
saldo = 100000
while saldo > 0:
    print(saldo)
    saldo -= 30000

SALAH: Mengira range(5) menghasilkan 1 sampai 5.

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

BENAR: range(n) selalu mulai dari 0. Mau 1 sampai 5? Tulis batasnya:

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

SALAH: Memakai print padahal butuh return, lalu hasilnya tidak bisa dipakai.

python
def tambah(a, b):
    print(a + b)

hasil = tambah(2, 3)   # hasil = None, angkanya hilang!

BENAR:

python
def tambah(a, b):
    return a + b

hasil = tambah(2, 3)   # hasil = 5, bisa dipakai lanjut

SALAH: Mereset akumulator di dalam loop, bukan sebelum loop.

python
for harga in [10000, 20000]:
    omzet = 0          # direset tiap putaran: hasil akhir cuma putaran terakhir!
    omzet += harga

BENAR: Siapkan penampung sebelum loop dimulai:

python
omzet = 0
for harga in [10000, 20000]:
    omzet += harga
print(omzet)  # 30000

Tantangan

Tabel perkalian fungsi

Buat fungsi tabel_kali(n) yang mencetak tabel perkalian 1 sampai 10 untuk angka n memakai loop for. Panggil untuk n=7 dan n=9.