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.
hitung = 1
while hitung <= 5:
print(f"Iterasi ke-{hitung}")
hitung += 1Output yang Dihasilkan:
Iterasi ke-1
Iterasi ke-2
Iterasi ke-3
Iterasi ke-4
Iterasi ke-5Loop counter yang sehat selalu memuat tiga komponen:
- Baris 1 (
hitung = 1): inisialisasi counter sebelum loop dimulai. - Baris 3 (
while hitung <= 5:): kondisi pengulangan — dicek ulang sebelum setiap iterasi. - Baris 5 (
hitung += 1): update counter di dalam blok, pemutus rantai yang menjadikan kondisi akhirnyaFalse.
Pola yang sama bekerja untuk mengakumulasi hasil. Variabel total menampung jumlah sementara, sementara angka berjalan menaik:
total = 0
angka = 1
while angka <= 5:
total = total + angka
angka += 1
print("Total 1 sampai 5:", total)Output yang Dihasilkan:
Total 1 sampai 5: 15Setiap 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:
hitung = 1
while hitung <= 5:
print("Halo")
# hitung tidak pernah diubah: kondisi selalu TrueInterpreter 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:
| Penyebab | Contoh |
|---|---|
| Lupa meng-update counter | hitung tidak pernah bertambah |
| Kondisi memakai pembanding salah | while hitung != 5: padahal hitung melompati 5 |
| Kondisi tidak mungkin berubah | flag yang seharusnya diubah terlupakan |
| Perhitungan desimal tidak pernah pas | penambahan 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:
# 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:
Memeriksa: abc
Input tidak valid, coba lagi
Memeriksa: -5
Input tidak valid, coba lagi
Memeriksa: 42
Angka yang diterima: 42Mari kita telaah apa yang terjadi pada baris-baris kode di atas:
- Baris 5 (
while True:): kondisi literalTruemembuat loop berjalan terus — keluar sepenuhnya diserahkan kepadabreak. - Baris 10 (
if jawaban.isdigit():): method.isdigit()mengembalikanTruehanya bila seluruh karakter adalah angka;"abc"dan"-5"tidak lolos,"42"lolos. - Baris 11 (
break): loop berhenti seketika dan eksekusi melompat ke kode setelah blokwhile.
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:
| Situasi | Struktur yang tepat |
|---|---|
| Mengolah setiap elemen koleksi | for |
| Jumlah iterasi sudah diketahui | for |
| Iterasi bergantung kondisi runtime | while |
| 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.