Perulangan for
for di Python berbeda dari for di kebanyakan bahasa lain: ia tidak menghitung, ia berjalan menyusuri kumpulan data.
Intisari
- Polanya:
for item in kumpulan:lalu isi blok menjorok ke dalam. - Nama
itembebas kamu pilih dan otomatis berganti isi tiap putaran. - Bisa menyusuri apa saja yang punya banyak isi: teks, list, dictionary, atau
range(). - Tidak ada
for (i = 0; i < n; i++)di Python. Kalau butuh nomor urut, pakairange()atauenumerate(). - Blok kosong tidak boleh โ kalau memang belum ada isinya, tulis
pass.
Masalah yang diselesaikan
# Tanpa perulangan โ melelahkan dan tidak bisa dipakai ulang
print("Halo Ani")
print("Halo Budi")
print("Halo Cici")
# Dengan perulangan
nama_list = ["Ani", "Budi", "Cici"]
for nama in nama_list:
print(f"Halo {nama}")
Baca barisnya apa adanya: โuntuk setiap nama di dalam nama_list, lakukan ini.โ
Python mengambil item pertama, menaruhnya di variabel nama, menjalankan blok di bawahnya,
lalu mengulang untuk item berikutnya sampai habis.
Anatomi
for nama in nama_list :
โ โ โ โ โโโ titik dua, wajib
โ โ โ โโโโโโโโโโ kumpulan yang disusuri
โ โ โโโโโโโโโโโโโโโโโ kata kunci
โ โโโโโโโโโโโโโโโโโโโโโโ variabel penampung, namanya bebas
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ kata kunci
Nama variabelnya terserah kamu, tapi pilih yang menjelaskan isinya:
for huruf in "Python":
print(huruf) # P, y, t, h, o, n โ satu per baris
for harga in [10000, 25000, 5000]:
print(harga * 2)
Mengulang sejumlah kali dengan range()
Kalau yang kamu butuhkan bukan data, melainkan pengulangan sekian kali:
for i in range(3):
print("Halo") # tercetak 3 kali
for i in range(1, 6):
print(f"Baris ke-{i}") # Baris ke-1 sampai Baris ke-5
Kebiasaan penamaan: kalau angka putarannya sendiri tidak kamu pakai, banyak programmer
menulis for _ in range(3):. Garis bawah itu variabel biasa โ ia hanya isyarat bagi pembaca
bahwa isinya sengaja diabaikan.
Mengumpulkan hasil
Pola paling sering: siapkan wadah sebelum perulangan, isi di dalamnya, pakai setelahnya.
nilai = [80, 95, 67, 88]
total = 0
for n in nilai:
total += n # total = total + n
print("Jumlah:", total) # 330
print("Rata-rata:", total / len(nilai)) # 82.5
harga = [10000, 25000, 5000]
harga_diskon = [] # wadah kosong
for h in harga:
harga_diskon.append(h * 0.9) # tambahkan ke wadah
print(harga_diskon) # [9000.0, 22500.0, 4500.0]
total = 0 harus di LUAR perulangan. Kalau ditaruh di dalam, nilainya
dikembalikan ke nol tiap putaran dan hasil akhirnya cuma item terakhir. Salah tempat satu tingkat
indentasi sudah cukup untuk mengubah arti kode sepenuhnya.
for dengan if di dalamnya
nilai = [80, 45, 95, 67, 88]
lulus = []
for n in nilai:
if n >= 70:
lulus.append(n)
print(f"{len(lulus)} dari {len(nilai)} siswa lulus") # 3 dari 5 siswa lulus
Perulangan bersarang
for i in range(1, 4):
for j in range(1, 4):
print(f"{i} x {j} = {i * j}")
print("---")
Perulangan dalam berjalan penuh untuk setiap putaran perulangan luar. Contoh di atas mencetak 9 baris, dipisah garis tiap tiga baris.
Kesalahan yang umum
| Gejala | Penyebab |
|---|---|
| Hasil akhir cuma item terakhir | Variabel penampung dibuat ulang di dalam perulangan |
TypeError: 'int' object is not iterable | Menulis for i in 5: โ angka tidak bisa disusuri, pakai range(5) |
IndentationError | Baris setelah for ...: tidak menjorok ke dalam |
| Kode setelah perulangan ikut mengulang | Indentasinya kelebihan โ kembalikan ke tepi kiri |
Latihan: cetak tabel perkalian 1โ10 untuk satu angka yang diminta dari pengguna.
Lalu buat versi kedua: dari sebuah list nilai ujian, cetak berapa yang lulus, berapa yang tidak,
dan berapa nilai tertingginya โ semuanya dihitung dengan perulangan, bukan dengan max().
Rangkuman ini sengaja dipangkas ke bagian yang dipakai di roadmap. Buka sumber aslinya saat kamu butuh detail lengkap atau referensi parameter.