Pemrograman Python: Dari Nol sampai Proyek Mini

Belum masuk. Progresmu tidak tersimpan.

Masuk
  • Bab 6 dari 11
  • 25 menit
  • 1 latihan kode
  • 4 soal kuis

Perulangan: for dan while

Di bab ini (10 bagian)
  1. Tujuan
  2. Kenapa perlu perulangan
  3. for dengan range
  4. for untuk menelusuri koleksi
  5. Pola akumulator
  6. while: mengulang selama kondisi True
  7. break dan continue
  8. Contoh lengkap: FizzBuzz
  9. Kesalahan umum
  10. Rangkuman

Tujuan bab ini

  • Mengulang kode dengan for untuk deret angka dan isi koleksi, serta dengan while selama kondisi masih benar.
  • Memakai range(a, b, s), enumerate, break, dan continue dengan 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:

JenisDipakai saatAnalogi
forjumlah putaran jelas, atau menelusuri isi koleksimembagikan kue ke setiap teman di daftar
whileperulangan bergantung pada kondisiterus mengaduk mi sampai matang

for dengan range

range() menghasilkan deret angka. Yang paling sering dipakai adalah bentuk dengan dua argumen.

for i in range(1, 6):
    print(i, end=" ")

Output:

1 2 3 4 5 

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:

BentukHasilKeterangan
range(5)0, 1, 2, 3, 4mulai dari 0
range(2, 6)2, 3, 4, 5dari a sampai b-1
range(0, 10, 3)0, 3, 6, 9langkah (step) 3
range(5, 0, -1)5, 4, 3, 2, 1step 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.

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

for b in buah:
    print(b.upper())

Output:

APEL
JERUK
MANGGA

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.

playlist = ["Lagu A", "Lagu B", "Lagu C"]

for nomor, judul in enumerate(playlist, start=1):
    print(f"{nomor}. {judul}")

Output:

1. Lagu A
2. Lagu B
3. Lagu C

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.

belanja = [12000, 8500, 23000]
total = 0

for harga in belanja:
    total += harga

print("Total belanja:", total)

Output:

Total belanja: 43500

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.

hitung = 3

while hitung > 0:
    print("Hitung:", hitung)
    hitung -= 1

print("Mulai!")

Output:

Hitung: 3
Hitung: 2
Hitung: 1
Mulai!

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:

  • break menghentikan loop sepenuhnya.
  • continue melewati sisa putaran saat ini dan lompat ke putaran berikutnya.
for angka in range(1, 10):
    if angka % 2 == 0:
        continue      # lewati angka genap
    if angka > 7:
        break         # berhenti total
    print(angka, end=" ")

Output:

1 3 5 7 

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:

n = 1
while True:
    if n * n > 50:
        break
    n += 1
print(n)

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.

for i in range(1, 16):
    if i % 15 == 0:
        print("FizzBuzz")
    elif i % 3 == 0:
        print("Fizz")
    elif i % 5 == 0:
        print("Buzz")
    else:
        print(i)

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 = 0 harus di luar, sebelum loop dimulai.
  • Mengubah list saat sedang di-loop. Menghapus item dari list yang sedang ditelusuri for bisa membuat item terlewat. Buat list baru saja.
  • Indentasi print keliru. print yang menjorok ikut diulang; yang tidak menjorok hanya jalan sekali setelah loop selesai.

Rangkuman

  • for mengulang sebanyak data: deret dari range() atau isi koleksi seperti list dan string.
  • range(a, b, s) menghasilkan angka dari a sampai b - 1 dengan langkah s.
  • enumerate memberi nomor urut sekaligus item.
  • while mengulang selama kondisi True; pastikan kondisinya bisa menjadi False agar tidak terjadi infinite loop.
  • break menghentikan loop, continue melompat ke putaran berikutnya.
  • Pola akumulator: siapkan variabel sebelum loop, perbarui di setiap putaran.

Selesaikan bab ini

  1. 1. Baca materi
  2. 2. Latihan kode (1)
  3. 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

  1. 1Apa yang dicetak kode berikut?

    for i in range(2, 10, 2):
        print(i, end=" ")
  2. 2Kata kunci continue menghentikan perulangan sepenuhnya.

  3. 3Apa nilai total setelah kode berikut dijalankan?

    total = 0
    for n in range(1, 6):
        total += n
    print(total)
  4. 4Apa penyebab paling umum infinite loop pada while?