pythonloopwhilePemula5 mnt baca

While Loop di Python

Pahami while lewat analogi menunggu air mendidih: ulangi selama kondisi benar, berhenti saat selesai, dan hindari jebakan infinite loop.

Analogi: menunggu air mendidih

Bayangkan kamu merebus air. Kamu tidak tahu pasti butuh berapa menit, jadi kamu mengecek terus: "sudah mendidih belum?" Kalau belum, tunggu lagi. Kalau sudah, matikan kompor. Itulah while: ulangi selama kondisinya masih benar, dan kamu tidak perlu tahu di awal berapa kali pengulangan terjadi.

Bandingkan dengan antrean yang sudah jelas jumlah orangnya, itu jatahnya for. while dipakai saat jumlah pengulangan tidak diketahui sebelumnya.

Kenapa konsep ini ada?

Banyak pekerjaan di dunia nyata tidak punya jumlah langkah yang pasti. Menunggu file selesai diunduh, meminta input sampai pengguna memasukkan angka yang benar, membaca data baris demi baris sampai habis, mencoba koneksi sampai berhasil. Semua ini butuh pola "lakukan terus sampai kondisi berubah", dan itulah alasan while diciptakan.

Bentuk dasar while

python
hitung = 3

while hitung > 0:      # selama kondisi True, blok di bawah diulang
    print(hitung)
    hitung = hitung - 1  # PENTING: kondisi harus bisa berubah jadi False

print("Selesai!")
# Output: 3, 2, 1, lalu "Selesai!"

Kunci while cuma satu: pastikan sesuatu di dalam loop mengubah kondisi, supaya loop bisa berhenti.

Contoh 1: tebak angka (jumlah tebakan tidak pasti)

python
angka_rahasia = 7
tebakan = 0

while tebakan != angka_rahasia:
    tebakan = int(input("Tebak angka 1-10: "))
    if tebakan < angka_rahasia:
        print("Terlalu kecil!")
    elif tebakan > angka_rahasia:
        print("Terlalu besar!")

print("Benar! Angkanya", angka_rahasia)

Kita tidak tahu pengguna butuh berapa kali tebakan, bisa 1 kali, bisa 20 kali. while cocok sempurna di sini. Bandingkan kalau dipaksa pakai for: kamu harus menebak batas maksimal tebakan di awal, misalnya for i in range(100), yang kaku dan membingungkan. while membiarkan masalahnya sendiri yang menentukan kapan berhenti, bukan tebakanmu di awal.

Contoh 2: validasi input data (konteks data)

Saat membersihkan data, kamu sering butuh input yang valid sebelum lanjut. Misalnya meminta umur yang masuk akal:

python
umur = -1

while umur < 0 or umur > 120:
    umur = int(input("Masukkan umur (0-120): "))
    if umur < 0 or umur > 120:
        print("Umur tidak masuk akal, coba lagi.")

print("Umur tersimpan:", umur)

Pola yang sama dipakai saat membaca file: while baris: artinya "baca terus selama masih ada baris".

Pola sentinel: nilai khusus sebagai tanda berhenti

Di pengolahan data, kamu sering tidak tahu kapan data habis sampai kamu menemukannya. Solusinya adalah nilai sentinel: nilai khusus yang disepakati sebagai tanda "sudah selesai", misalnya baris kosong, angka -1, atau kata "SELESAI". Loop terus berjalan sampai sentinel itu muncul, lalu break. Inilah alasan while True + break begitu populer di skrip ETL dan pembaca file: kodenya jujur berkata "aku tidak tahu kapan berhentinya, berhentilah saat datanya bilang berhenti".

Bahaya: infinite loop

Infinite loop terjadi saat kondisi tidak pernah menjadi False. Program jalan selamanya dan tidak merespons.

python
# JANGAN lakukan ini: hitung tidak pernah berubah!
hitung = 3
while hitung > 0:
    print(hitung)
    # lupa mengurangi hitung -> loop selamanya

Catatan teknis: Kalau program macet karena infinite loop, tekan Ctrl+C di terminal untuk menghentikannya secara paksa. Kebiasaan baik: sebelum menjalankan while, tanyakan ke diri sendiri, "apa yang membuat kondisi ini berhenti?"

Kadang loop selamanya memang disengaja, misalnya server yang terus berjalan. Polanya memakai while True dengan break:

python
while True:
    perintah = input("Ketik 'keluar' untuk berhenti: ")
    if perintah == "keluar":
        break  # keluar dari loop
    print("Kamu mengetik:", perintah)

Kesalahan umum pemula

SALAH: lupa mengubah variabel kondisi

python
i = 0
while i < 5:
    print(i)
    # i tidak pernah bertambah -> infinite loop!

BENAR: update variabel di setiap iterasi

python
i = 0
while i < 5:
    print(i)
    i = i + 1   # atau i += 1

SALAH: kondisi yang mustahil berhenti

python
while 1 < 2:      # selalu True, tidak ada yang berubah
    print("halo")

BENAR: kondisi bergantung pada sesuatu yang berubah

python
sisa = 3
while sisa > 0:
    print("sisa:", sisa)
    sisa -= 1

Tantangan

Jumlahkan Sampai Nol

Minta input angka berulang kali dengan while. Setiap angka valid ditambahkan ke total. Loop berhenti saat pengguna mengetik 0, lalu cetak totalnya.