- Bab 6 dari 11
- 25 menit
- 1 latihan kode
- 4 soal kuis
Perulangan: for dan while
Di bab ini (10 bagian)
Tujuan bab ini
- Mengulang kode dengan
foruntuk deret angka dan isi koleksi, serta denganwhileselama kondisi masih benar. - Memakai
range(a, b, s),enumerate,break, dancontinuedengan tepat. - Menulis pola akumulator dan menghindari infinite loop.
Kenapa perlu perulangan
Bayangkan kamu disuruh mencetak angka 1 sampai 100. Menulis print() seratus kali jelas bukan pilihan. Komputer justru jago mengerjakan hal yang sama berulang kali tanpa bosan, dan perulangan (loop) adalah cara kita menyuruhnya.
Python punya dua jenis perulangan:
| Jenis | Dipakai saat | Analogi |
|---|---|---|
for | jumlah putaran jelas, atau menelusuri isi koleksi | membagikan kue ke setiap teman di daftar |
while | perulangan bergantung pada kondisi | terus mengaduk mi sampai matang |
for dengan range
range() menghasilkan deret angka. Yang paling sering dipakai adalah bentuk dengan dua argumen.
Output:
Kenapa berhenti di 5, bukan 6? Karena range(a, b) menghasilkan angka dari a sampai b - 1. Batas akhirnya tidak ikut. Argumen end=" " membuat print diakhiri spasi, bukan baris baru, sehingga semua angka tampil di satu baris.
range punya tiga bentuk:
| Bentuk | Hasil | Keterangan |
|---|---|---|
range(5) | 0, 1, 2, 3, 4 | mulai dari 0 |
range(2, 6) | 2, 3, 4, 5 | dari a sampai b-1 |
range(0, 10, 3) | 0, 3, 6, 9 | langkah (step) 3 |
range(5, 0, -1) | 5, 4, 3, 2, 1 | step negatif untuk mundur |
for untuk menelusuri koleksi
for di Python tidak hanya untuk angka. Ia bisa langsung mengambil setiap item dari list, string, atau koleksi lain.
Output:
Di setiap putaran, variabel b berisi satu item, berurutan dari depan. Kamu tidak perlu mengurus indeks sendiri. Ini salah satu hal yang membuat Python terasa ringkas.
enumerate: butuh nomor urut juga
Kalau kamu butuh item sekaligus nomor urutnya, pakai enumerate.
Output:
Tanpa start=1, penomoran dimulai dari 0. Cara ini lebih rapi daripada for i in range(len(playlist)).
Pola akumulator
Salah satu pola paling berguna di perulangan adalah akumulator: sebuah variabel yang dimulai dari nilai awal, lalu ditambah sedikit demi sedikit di setiap putaran. Mirip celengan yang diisi setiap hari.
Output:
Langkahnya: total mulai dari 0, lalu menjadi 12000, 20500, dan akhirnya 43500. Kuncinya adalah membuat variabel akumulator sebelum loop. Kalau total = 0 ditaruh di dalam loop, nilainya akan direset setiap putaran.
while: mengulang selama kondisi True
while terus mengulang selama kondisinya bernilai True, dan berhenti begitu kondisinya False.
Output:
Baris hitung -= 1 sangat penting. Ia membuat kondisi suatu saat menjadi False.
Awas infinite loop
Kalau kondisi while tidak pernah menjadi False, loop akan berjalan selamanya. Ini disebut infinite loop. Program terlihat hang, dan di terminal kamu harus menekan Ctrl + C untuk menghentikannya. Penyebab paling umum adalah lupa mengubah variabel yang dicek, misalnya lupa menulis hitung -= 1.
break dan continue
Dua kata kunci ini mengubah alur perulangan:
breakmenghentikan loop sepenuhnya.continuemelewati sisa putaran saat ini dan lompat ke putaran berikutnya.
Output:
Telusuri pelan-pelan: angka genap dilewati oleh continue. Saat angka bernilai 9, kondisi angka > 7 benar sehingga break menghentikan loop.
while True yang dipadukan dengan break adalah pola umum saat kamu tidak tahu kapan harus berhenti, misalnya mencari angka pertama yang memenuhi syarat:
Output: 8, karena 8 x 8 = 64 adalah kuadrat pertama yang lebih dari 50.
Contoh lengkap: FizzBuzz
FizzBuzz adalah soal latihan klasik yang sering muncul di wawancara kerja. Aturannya: untuk angka 1 sampai n, tulis "Fizz" bila habis dibagi 3, "Buzz" bila habis dibagi 5, "FizzBuzz" bila habis dibagi keduanya, dan angka itu sendiri bila tidak.
Output (dipendekkan): 1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz.
Perhatikan bahwa pengecekan i % 15 == 0 harus paling atas. Kalau i % 3 == 0 dicek lebih dulu, angka 15 akan tercetak "Fizz" saja. Ini menggabungkan pelajaran bab sebelumnya tentang urutan elif dengan perulangan.
Kesalahan umum
- Mengira
range(1, 5)menghasilkan 5. Batas akhir tidak ikut, jadi hasilnya 1 sampai 4. - Lupa mengubah variabel di
while. Akibatnya infinite loop. - Menaruh akumulator di dalam loop.
total = 0harus di luar, sebelum loop dimulai. - Mengubah list saat sedang di-loop. Menghapus item dari list yang sedang ditelusuri
forbisa membuat item terlewat. Buat list baru saja. - Indentasi
printkeliru.printyang menjorok ikut diulang; yang tidak menjorok hanya jalan sekali setelah loop selesai.
Rangkuman
formengulang sebanyak data: deret darirange()atau isi koleksi seperti list dan string.range(a, b, s)menghasilkan angka dariasampaib - 1dengan langkahs.enumeratememberi nomor urut sekaligus item.whilemengulang selama kondisiTrue; pastikan kondisinya bisa menjadiFalseagar tidak terjadi infinite loop.breakmenghentikan loop,continuemelompat ke putaran berikutnya.- Pola akumulator: siapkan variabel sebelum loop, perbarui di setiap putaran.
Slide 16 sampai 16 dari deck Pemrograman Python: Dari Nol sampai Proyek Mini. Penjelasan lengkapnya ada di mode Baca.

Selesaikan bab ini
- 1. Baca materi
- 2. Latihan kode (1)
- 3. Kuis (4 soal)
Latihan kode: FizzBuzz versi fungsi
Lengkapi fungsi fizzbuzz(n) yang mengembalikan list string untuk angka 1 sampai n:
"FizzBuzz"bila habis dibagi 3 dan 5"Fizz"bila habis dibagi 3"Buzz"bila habis dibagi 5- angka itu sendiri sebagai string, misalnya
"7", bila tidak
Contoh: fizzbuzz(5) menghasilkan ["1", "2", "Fizz", "4", "Buzz"]. Pakai pola akumulator: siapkan list kosong, lalu append di setiap putaran.
Cek pemahaman
1Apa yang dicetak kode berikut?
for i in range(2, 10, 2): print(i, end=" ")2Kata kunci continue menghentikan perulangan sepenuhnya.
3Apa nilai total setelah kode berikut dijalankan?
total = 0 for n in range(1, 6): total += n print(total)4Apa penyebab paling umum infinite loop pada while?