Kursus Python / Mengendalikan while dengan break dan continue

Loop while mengulang selama kondisinya benar. break mengakhiri loop terdalam, sedangkan continue melewati sisa iterasi saat ini; pastikan setiap jalur tetap dapat memperbarui keadaan yang diperlukan untuk berhenti.

Pilih perulangan berdasarkan kondisi

Gunakan for jika unsur yang akan diproses sudah tersedia, seperti pada latihan for, range, enumerate, dan zip. Gunakan while jika pengulangan bergantung pada keadaan yang berubah atau masukan berulang. Bentuk while True bukan kesalahan dengan sendirinya: aturan keluar di dalam loop harus jelas.

Kondisi while diperiksa sebelum isi dijalankan. Jika sudah salah sejak awal, isi tidak berjalan sama sekali. continue kembali ke pemeriksaan kondisi, sehingga pembaruan penghitung yang hanya diletakkan sesudahnya dapat terlewati. Pada loop yang tidak merespons, hentikan dengan Ctrl+C di terminal, lalu periksa jalur yang seharusnya memperbarui keadaan.

Referensi while Python menjelaskan pengujian kondisi dan pengaruh instruksi pengendali. Perulangan masukan berikut memperbarui teks di awal setiap iterasi, sehingga masukan kosong tetap diikuti pemanggilan input baru.

Baca jumlah sampai pengguna memilih keluar

Simpan kode lengkap berikut sebagai while_input.py dengan encoding UTF-8. Gunakan Python 3.12 atau lebih baru dan jalankan python while_input.py pada terminal lingkungan proyek. Tidak diperlukan paket tambahan.

total = 0
while True:
    text = input("amount or q: ").strip()
    if text == "q":
        break
    if text == "":
        continue
    amount = int(text)
    if amount < 0:
        print("skip negative")
        continue
    total += amount
print("total:", total)

Masukkan 3500 lalu Enter, tekan Enter lagi untuk baris kosong, masukkan -1 lalu Enter, dan terakhir q lalu Enter. Keluaran standar program tanpa echo karakter yang Anda ketik adalah:

amount or q: amount or q: amount or q: skip negative
amount or q: total: 3500

Terminal interaktif biasanya memperlihatkan masukan Anda di belakang setiap prompt dan berpindah baris saat Enter ditekan. Blok di atas hanya menggabungkan keluaran program. Prompt amount or q: meminta jumlah atau perintah keluar, dan pesan skip negative menunjukkan angka negatif dilewati.

Telusuri jalur untuk setiap masukan

total dimulai dari nol sebelum loop. Masukan 3500 tidak cocok dengan perintah keluar atau teks kosong, sehingga dikonversi menjadi integer dan ditambahkan ke total. Baris kosong menjalankan continue; sisanya dilewati, lalu iterasi baru membaca masukan lagi. Angka -1 menampilkan pesan dan menjalankan continue sebelum penjumlahan, sehingga total tetap 3500.

Masukan q menjalankan break. Program lalu meneruskan instruksi setelah loop, yaitu menampilkan total. Urutan pemeriksaan penting: perintah keluar diuji sebelum int(text), sehingga q tidak diperlakukan sebagai angka yang gagal dikonversi. strip() membersihkan tepi teks, jadi masukan seperti q juga dikenali.

Versi ini menerima integer atau q, tetapi belum menangani semua teks. abc dan 8000.5 menghasilkan ValueError pada konversi; program berhenti tanpa mencetak baris total akhir. Masukan 0 berbeda dari string kosong: ia dikonversi dan diterima sebagai angka, tetapi tidak mengubah total.

Untuk mengizinkan percobaan ulang pada versi yang dikembangkan, penanganan ValueError perlu ditempatkan khusus di sekitar konversi integer, setelah pemeriksaan perintah keluar. Kesalahan tersebut dapat diberi penjelasan lalu diarahkan ke iterasi baru. Menangkap semua kesalahan tanpa membedakan penyebab justru dapat menyembunyikan masalah lain. Contoh asli di sini sengaja tetap menunjukkan batas konversi secara langsung.

Pahami lingkup break dan uji kasus batas

break hanya mengakhiri loop terdalam tempat instruksi itu berada. Dalam dua loop bersarang, loop luar tetap dapat melanjutkan. Untuk keluar dari beberapa tingkat, rancang penanda keadaan yang diperiksa tiap tingkat atau kembalikan hasil dari fungsi bila itu sesuai struktur program. continue juga berlaku pada loopnya sendiri. Tutorial break dan continue memperlihatkan lingkup tersebut.

  1. Masukkan q sejak awal. Hasil akhir harus total: 0 karena belum ada jumlah yang ditambahkan.
  2. Jalankan ulang dengan urutan 10, 20, lalu q. Hasilnya total: 30.
  3. Coba 0 lalu q. Total tetap nol, tetapi nol sudah melewati konversi sebagai nilai yang sah, bukan dilewati sebagai masukan kosong.
  4. Coba Q besar. Perbandingan pada skrip hanya menerima q kecil, sehingga Q mencapai konversi dan menghasilkan ValueError. Putuskan aturan kapitalisasi perintah sebelum menormalkannya.
  5. Pulihkan urutan awal 3500, baris kosong, -1, dan q, lalu cocokkan hasilnya.

Masukan yang berakhir sebelum perintah keluar berbeda dari baris kosong dan dapat menghasilkan EOFError. Jika menjalankan skrip melalui berkas atau pipa, sediakan baris keluar atau tentukan kebijakan akhir masukan secara eksplisit. Loop yang mudah dipahami mempertahankan jalur keluar yang terlihat dan tidak menganggap setiap kegagalan sebagai alasan untuk terus mengulang tanpa batas.