Tidak semua pengulangan jumlahnya diketahui di awal. Program perlu bertanya lagi sampai jawaban pengguna valid, mencoba ulang koneksi sampai berhasil, atau mengurangi sisa baterai sampai habis. Perulangan while dirancang untuk situasi seperti itu: ulangi selama sebuah kondisi bernilai True. Pada Chapter ini kita bedah mekanisme while, pola counter dan akumulator, jebakan infinite loop, serta pola validasi input yang memakai break.

Cara Kerja while #

Interpreter Python menjalankan while dalam siklus tiga langkah: evaluasi kondisi, eksekusi blok bila True, lalu kembali mengevaluasi kondisi. Begitu kondisi bernilai False, eksekusi melanjutkan ke kode setelah blok while.

python
hitung = 1

while hitung <= 5:
    print(f"Iterasi ke-{hitung}")
    hitung += 1

Output yang Dihasilkan:

text
Iterasi ke-1
Iterasi ke-2
Iterasi ke-3
Iterasi ke-4
Iterasi ke-5

Loop counter yang sehat selalu memuat tiga komponen:

  1. Baris 1 (hitung = 1): inisialisasi counter sebelum loop dimulai.
  2. Baris 3 (while hitung <= 5:): kondisi pengulangan — dicek ulang sebelum setiap iterasi.
  3. Baris 5 (hitung += 1): update counter di dalam blok, pemutus rantai yang menjadikan kondisi akhirnya False.

Pola yang sama bekerja untuk mengakumulasi hasil. Variabel total menampung jumlah sementara, sementara angka berjalan menaik:

python
total = 0
angka = 1

while angka <= 5:
    total = total + angka
    angka += 1

print("Total 1 sampai 5:", total)

Output yang Dihasilkan:

text
Total 1 sampai 5: 15

Setiap iterasi menjumlahkan angka ke total; ketika angka mencapai 6, kondisi angka <= 5 bernilai False dan loop berhenti tepat setelah total 15 terbentuk.

Bahaya Infinite Loop #

Lupakan satu saja komponen update, dan while tidak pernah berhenti. Perhatikan potongan berikut — jangan dijalankan karena loop tidak memiliki jalan keluar:

python
hitung = 1

while hitung <= 5:
    print("Halo")
    # hitung tidak pernah diubah: kondisi selalu True

Interpreter Python mengevaluasi 1 <= 5 menjadi True, mencetak "Halo", lalu mengulang tanpa akhir. Untuk menghentikan program yang macet di terminal, tekan Ctrl+C untuk mengirim sinyal KeyboardInterrupt.

Penyebab umum infinite loop antara lain:

PenyebabContoh
Lupa meng-update counterhitung tidak pernah bertambah
Kondisi memakai pembanding salahwhile hitung != 5: padahal hitung melompati 5
Kondisi tidak mungkin berubahflag yang seharusnya diubah terlupakan
Perhitungan desimal tidak pernah paspenambahan 0.1 yang tidak pernah tepat mencapai target

break sebagai Pintu Darurat #

Pernyataan break menghentikan loop dari dalam blok, cocok untuk pola “ulangi sampai input valid”. Contoh berikut mensimulasikan tiga input pengguna — dua salah, lalu satu benar:

python
# Simulasi input pengguna: dua input salah, lalu satu input benar
input_pengguna = ["abc", "-5", "42"]
posisi = 0

while True:
    jawaban = input_pengguna[posisi]
    posisi += 1
    print("Memeriksa:", jawaban)

    if jawaban.isdigit():
        break

    print("Input tidak valid, coba lagi")

print("Angka yang diterima:", jawaban)

Output yang Dihasilkan:

text
Memeriksa: abc
Input tidak valid, coba lagi
Memeriksa: -5
Input tidak valid, coba lagi
Memeriksa: 42
Angka yang diterima: 42

Mari kita telaah apa yang terjadi pada baris-baris kode di atas:

  1. Baris 5 (while True:): kondisi literal True membuat loop berjalan terus — keluar sepenuhnya diserahkan kepada break.
  2. Baris 10 (if jawaban.isdigit():): method .isdigit() mengembalikan True hanya bila seluruh karakter adalah angka; "abc" dan "-5" tidak lolos, "42" lolos.
  3. Baris 11 (break): loop berhenti seketika dan eksekusi melompat ke kode setelah blok while.

Pada program nyata, sumber jawaban adalah fungsi input() yang kita bahas pada Chapter Membaca Input Pengguna; struktur loop-nya persis seperti contoh di atas.

while atau for #

Keduanya sama-sama loop, tetapi kegunaannya berbeda:

SituasiStruktur yang tepat
Mengolah setiap elemen koleksifor
Jumlah iterasi sudah diketahuifor
Iterasi bergantung kondisi runtimewhile
Pola “ulangi sampai berhasil / valid”while + break

Aturan praktisnya: bila kita bisa menuliskan item yang diulang, pakai for; bila yang bisa dituliskan hanya syaratnya, pakai while. Untuk deret angka yang menyertai for, Python menyediakan fungsi range() yang kita bahas pada Chapter berikutnya.