Lompati ke konten utama
Modul 2 · Pelajaran 2 dari 46/36 dalam kursus~8 min
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

Python
n = 1
while n < 1000:
    n = n * 2
n  # 1024

Blok 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:

Python
i = 0
while i < 5:
    print(i)
    i = i + 1

Perulangan tak terbatas + kondisi keluar internal — berguna jika kondisi tersebut dievaluasi setelah melakukan sesuatu:

Python
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:

Python
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

Latihan#python.m2.l2.e1
Upaya: 0Memuat…

Temukan bilangan bulat terkecil `n >= 1` sehingga 2**n melebihi satu juta. Tetapkan ke `hasil` dan evaluasi (harus 20).

Memuat editor…
Tunjukkan petunjuk

2**20 = 1.048.576 adalah yang pertama melebihi 1.000.000.

Solusi tersedia setelah 3 upaya

Tinjau latihan

Latihan#python.m2.l2.e2
Upaya: 0Memuat…

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`.

Memuat editor…
Tunjukkan petunjuk

1000 → 500 → 250 → 125 → 62 → 31 → 15 → 7 → 3 → 1 → 0: sepuluh langkah.

Solusi tersedia setelah 3 upaya

Tantangan tambahan

Latihan#python.m2.l2.e3
Upaya: 0Memuat…

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.

Memuat editor…
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