Pelajaran modul (2/4)
sementara loop
Perulangan while mengulangi blok selama kondisi tetap benar. Gunakan
while ketika Anda tidak mengetahui sebelumnya berapa banyak iterasi yang Anda perlukan:
jumlah putaran tergantung pada sesuatu yang berubah di dalam loop.
Sintaksis
n = 1
while n < 1000:
n = n * 2
n # 1024Blok indentasi dieksekusi berulang kali. Sebelum setiap iterasi Python mengevaluasi kondisi: segera setelah menjadi salah, perulangan berakhir dan eksekusi berlanjut setelah blok.
Pola umum
Penghitung manual — setara dengan for klasik dalam bahasa lain:
i = 0
while i < 5:
print(i)
i = i + 1Perulangan tak terbatas + kondisi keluar internal — berguna jika kondisi tersebut dievaluasi setelah melakukan sesuatu:
acc = 0
while True:
acc = acc + 1
if acc * acc > 100:
break
acc # 11 (11*11 = 121 is the first square > 100)break segera keluar dari loop terdalam (kita akan melihatnya di loop berikutnya
pelajaran).
Kesalahan klasik: putaran tak terbatas
Jika variabel dalam kondisi tidak berubah di dalam loop, maka
program tidak pernah berakhir. Ini adalah bug nomor satu dengan while:
n = 0
while n < 10:
print(n) # n is never modified → infinite loop!Dalam latihan kita ada batas waktu eksekusi, jadi perulangan tak terbatas akan gagal dengan pesan yang jelas alih-alih membekukan browser. Namun dalam produksi an loop tak terbatas adalah bug yang serius.
Risiko loop tak terbatas dan kondisi terminasi
Perulangan while dijalankan selama kondisinya bernilai True. Jika Anda lupa memperbarui variabel yang memengaruhi kondisi, loop Anda akan berjalan tanpa batas, sehingga membekukan runtime. Selalu pastikan bahwa badan perulangan membuat kemajuan menuju kondisi keluar.
Cobalah sendiri
Temukan bilangan bulat terkecil `n >= 1` sehingga 2**n melebihi satu juta. Tetapkan ke `hasil` dan evaluasi (harus 20).
Tunjukkan petunjuk
2**20 = 1.048.576 adalah yang pertama melebihi 1.000.000.
Solusi tersedia setelah 3 upaya
Tinjau latihan
Mulai dari `n = 1000`, bagi n dengan pembagian bilangan bulat (n // 2) hingga menjadi 0. Hitung berapa banyak iterasi yang diperlukan dalam `langkah`. Evaluasi `langkah`.
Tunjukkan petunjuk
1000 → 500 → 250 → 125 → 62 → 31 → 15 → 7 → 3 → 1 → 0: sepuluh langkah.
Solusi tersedia setelah 3 upaya
Tantangan tambahan
Given the variable `n = 32`, write a `while` loop to count how many times you can divide `n` by 2 (using floor division `//`) before `n` becomes less than or equal to 1. Store the count in `divisions` and evaluate it.
Tunjukkan petunjuk
The while condition is n > 1. Inside the loop, divide n by 2 and increment divisions by 1.
Solusi tersedia setelah 3 upaya