Python & AI Tutorials Logo
Pemrograman Python

11. Mengulang Tindakan dengan while Loop

Program sering perlu mengulang suatu tindakan berkali-kali. Kamu sudah melihat bagaimana membuat keputusan dengan pernyataan if di Bab 8, tetapi bagaimana jika kamu perlu melakukan suatu aksi berulang kali sampai kondisi tertentu terpenuhi? Di sinilah loop(loop) berperan.

Python menyediakan dua jenis loop utama: while loop dan for loop. Dalam bab ini, kita akan fokus pada while loop, yang mengulang sebuah blok kode selama suatu kondisi tetap benar. for loop, yang lebih cocok untuk melakukan iterasi pada sequence, akan dibahas di Bab 12.

Memahami while loop adalah hal yang mendasar untuk menulis program yang dapat memproses data berulang kali, memvalidasi input pengguna, mengimplementasikan game loop, dan menangani banyak skenario pemrograman dunia nyata lainnya.

11.1) Struktur dari while Loop

Sebuah while loop mengeksekusi suatu blok kode berulang kali selama kondisi yang ditentukan bernilai True. Setelah kondisi menjadi False, loop berhenti, dan program melanjutkan dengan kode setelah loop.

Sintaks while Loop Dasar

Struktur dari sebuah while loop terlihat seperti ini:

python
while condition:
    # Blok kode untuk diulang
    # Kode ini berjalan selama condition bernilai True

condition adalah ekspresi apa pun yang dievaluasi menjadi nilai boolean (atau dapat diinterpretasikan sebagai truthy atau falsy, seperti yang kita pelajari di Bab 7). Blok kode yang diindentasi di bawah pernyataan while disebut badan loop (loop body), dan ia dieksekusi berulang kali selama kondisi tetap True.

Mari lihat contoh sederhana:

python
# Menghitung dari 1 sampai 5
count = 1
while count <= 5:
    print(f"Count is: {count}")
    count = count + 1  # Menambah count
print("Loop finished!")

Output:

Count is: 1
Count is: 2
Count is: 3
Count is: 4
Count is: 5
Loop finished!

Cara kerjanya langkah demi langkah:

  1. Kita menginisialisasi count menjadi 1
  2. Kondisi count <= 5 diperiksa. Karena 1 <= 5 adalah True, badan loop dieksekusi
  3. Di dalam loop, kita mencetak count saat ini lalu menambahkannya sebesar 1
  4. Setelah badan loop selesai, Python kembali ke pernyataan while dan memeriksa kondisi lagi
  5. Proses ini berulang sampai count menjadi 6, pada titik itu 6 <= 5 adalah False, dan loop berakhir
  6. Program melanjutkan dengan kode setelah loop

Inti pentingnya adalah kondisi diperiksa sebelum setiap iterasi (setiap pengulangan badan loop). Jika kondisi False sejak awal, badan loop tidak akan pernah dieksekusi sama sekali:

python
count = 10
while count <= 5:
    print("This will never print")
print("Loop skipped entirely")

Output:

Loop skipped entirely

Karena 10 <= 5 adalah False sejak awal, badan loop tidak pernah berjalan.

Pentingnya Memodifikasi Variabel Loop

Agar sebuah while loop pada akhirnya berhenti, sesuatu di dalam loop harus mengubah kondisi dari True menjadi False. Ini biasanya berarti memodifikasi variabel yang digunakan dalam kondisi. Jika kamu lupa melakukan ini, kamu membuat loop tak berujung (infinite loop) (yang akan kita bahas lebih detail di bagian berikutnya).

Berikut contoh yang menunjukkan mengapa memperbarui variabel loop itu penting:

python
# Menghitung jumlah angka dari 1 sampai 10
total = 0
number = 1
 
while number <= 10:
    total = total + number  # Menambahkan angka saat ini ke total
    number = number + 1     # Pindah ke angka berikutnya
 
print(f"The sum of numbers from 1 to 10 is: {total}")

Output:

The sum of numbers from 1 to 10 is: 55

Dalam contoh ini, kita mengakumulasi jumlah sambil maju melalui angka-angka. Baik total maupun number berubah pada setiap iterasi, tetapi modifikasi pada number lah yang memastikan loop akhirnya berhenti ketika number menjadi 11.

while Loop dengan Input Pengguna

Salah satu penggunaan praktis while loop adalah memproses input pengguna sampai kondisi tertentu terpenuhi. Mari buat game tebak angka sederhana:

python
# Game tebak angka sederhana
secret_number = 7
guess = 0
 
while guess != secret_number:
    guess = int(input("Guess the number (1-10): "))
    
    if guess < secret_number:
        print("Too low! Try again.")
    elif guess > secret_number:
        print("Too high! Try again.")
    else:
        print("Correct! You guessed it!")

Loop ini terus meminta tebakan sampai pengguna memasukkan angka yang benar. Setiap iterasi memproses satu tebakan dan memberikan umpan balik. Loop secara alami berakhir ketika guess sama dengan secret_number, sehingga kondisi guess != secret_number menjadi False.

while Loop dengan Banyak Kondisi

Kamu bisa menggunakan operator boolean (and, or, not) untuk membuat kondisi loop yang lebih kompleks, seperti yang kita pelajari di Bab 9:

python
# Memproses input sampai pengguna memasukkan "quit" atau mencapai 5 percobaan
attempts = 0
user_input = ""
 
while user_input != "quit" and attempts < 5:
    user_input = input("Enter a command (or 'quit' to exit): ")
    attempts += 1
    
    if user_input == "quit":
        print("Goodbye!")
    else:
        print(f"You entered: {user_input}")
        print(f"Attempts remaining: {5 - attempts}")
 
if attempts >= 5 and user_input != "quit":
    print("Maximum attempts reached.")

Loop ini terus berjalan selama kedua kondisi bernilai true: pengguna belum memasukkan "quit" dan mereka belum melewati 5 percobaan. Loop berakhir ketika salah satu kondisi menjadi false.

Memvisualisasikan Eksekusi while Loop

Berikut flowchart yang menunjukkan bagaimana sebuah while loop dieksekusi:

True

False

Mulai

Inisialisasi variabel

Periksa kondisi

Eksekusi badan loop

Perbarui variabel

Lanjutkan setelah loop

Selesai

Loop membuat sebuah siklus di mana kondisi diperiksa, badan dieksekusi jika kondisi true, variabel diperbarui, lalu kondisi diperiksa lagi. Siklus ini berlanjut sampai kondisi menjadi false.

11.2) Loop Tak Berujung dan Cara Menghindarinya

Loop tak berujung (infinite loop) adalah loop yang tidak pernah berhenti karena kondisinya tidak pernah menjadi False. Loop tak berujung adalah salah satu kesalahan paling umum yang dilakukan pemula dengan while loop, dan bisa membuat program kamu macet tanpa batas waktu.

Apa Penyebab Loop Tak Berujung?

Penyebab paling umum dari loop tak berujung adalah lupa memodifikasi variabel yang memengaruhi kondisi loop. Mari lihat contoh yang bermasalah:

python
# PERINGATAN: Loop tak berujung - hanya untuk demonstrasi
# MASALAH: count tidak pernah dimodifikasi
count = 1
while count <= 5:
    print(f"Count is: {count}")
    # Missing: count += 1

Jika kamu menjalankan kode ini, ia akan mencetak "Count is: 1" selamanya karena count tetap 1, dan 1 <= 5 selalu True. Kondisinya tidak pernah berubah.

Cara mengenali bahwa ini loop tak berujung: Lihat kondisi loop (count <= 5) lalu periksa apakah ada sesuatu di dalam badan loop yang memodifikasi count. Jika tidak, dan kondisi dimulai sebagai True, kamu punya loop tak berujung.

Berikut versi yang sudah diperbaiki:

python
# Versi yang benar dengan penambahan yang tepat
count = 1
while count <= 5:
    print(f"Count is: {count}")
    count += 1  # Ini memastikan loop pada akhirnya berhenti

Output:

Count is: 1
Count is: 2
Count is: 3
Count is: 4
Count is: 5

Debugging Loop Tak Berujung dengan Batas Keamanan

Saat mengembangkan kode dengan loop, akan membantu untuk menambahkan batas keamanan agar mencegah loop tak berujung yang tidak sengaja selama pengujian:

python
# Batas keamanan selama pengembangan
count = 1
iterations = 0
max_iterations = 100  # Batas keamanan
 
while count <= 5 and iterations < max_iterations:
    print(f"Count is: {count}")
    count += 1
    iterations += 1
 
if iterations >= max_iterations:
    print("WARNING: Maximum iterations reached. Check for infinite loop.")

Pola ini menambahkan sebuah counter yang melacak berapa kali loop telah dieksekusi. Jika mencapai batas keamanan, kamu tahu ada yang salah dengan logika loop kamu. Setelah kamu yakin loop bekerja dengan benar, kamu bisa menghapus batas keamanan tersebut.

Loop Tak Berujung dengan Input Pengguna

Skenario umum lain untuk loop tak berujung melibatkan validasi input pengguna:

python
# PERINGATAN: Potensi loop tak berujung - hanya untuk demonstrasi
# MASALAH: Jika pengguna tidak pernah memasukkan input valid, loop tidak pernah berakhir
age = -1
while age < 0:
    age = int(input("Enter your age: "))
    # Jika pengguna memasukkan angka negatif, loop berlanjut

Loop ini bekerja dengan benar jika pengguna pada akhirnya memasukkan angka non-negatif, tetapi menjadi loop tak berujung jika pengguna terus memasukkan nilai negatif. Meskipun ini mungkin bisa diterima untuk beberapa program (kamu ingin terus bertanya sampai input valid diterima), penting untuk memahami bahwa berakhirnya loop sepenuhnya bergantung pada perilaku pengguna.

Pendekatan yang lebih kuat mungkin menyertakan cara untuk keluar:

python
# Pendekatan yang lebih baik dengan opsi keluar
age = -1
while age < 0:
    user_input = input("Enter your age (or 'quit' to exit): ")
    
    if user_input.lower() == 'quit':
        print("Exiting program.")
        age = 0  # Set ke nilai valid untuk keluar dari loop
    else:
        age = int(user_input)
        if age < 0:
            print("Age must be non-negative. Please try again.")
 
if age > 0:
    print(f"Your age is: {age}")

Loop Tak Berujung karena Kesalahan Logika

Kadang loop tak berujung terjadi karena kesalahan logika dalam cara kamu memperbarui variabel:

python
# PERINGATAN: Loop tak berujung - hanya untuk demonstrasi
# MASALAH: count dikurangi alih-alih ditambah
count = 1
while count <= 5:
    print(f"Count is: {count}")
    count -= 1  # KESALAHAN: Ini membuat count lebih kecil, bukan lebih besar

Ini membuat loop tak berujung karena count dimulai dari 1 dan menjadi 0, -1, -2, dan seterusnya. Karena angka negatif selalu kurang dari atau sama dengan 5, kondisi count <= 5 tetap True selamanya.

Versi yang diperbaiki:

python
count = 1
while count <= 5:
    print(f"Count is: {count}")
    count += 1  # Benar: tambah agar akhirnya melebihi 5

Debugging Loop Tak Berujung

Jika kamu tidak sengaja membuat loop tak berujung saat menjalankan skrip Python, kamu bisa menghentikannya dengan menekan Ctrl+C (atau Cmd+C di Mac) di terminal kamu. Ini mengirim sinyal keyboard interrupt ke Python, yang menghentikan program.

Cara menghindari loop tak berujung:

  1. Selalu pastikan kondisi loop bisa menjadi False: Pastikan variabel dalam kondisi dimodifikasi di dalam loop
  2. Gunakan operator perbandingan yang benar: Pastikan <=, <, !=, dan lain-lain sesuai dengan maksudmu
  3. Uji dengan nilai kecil terlebih dahulu: Sebelum menjalankan loop yang mungkin dieksekusi berkali-kali, uji dengan batas kecil
  4. Tambahkan pernyataan print untuk debug: Sementara waktu cetak variabel loop untuk melihat bagaimana ia berubah:
  5. Gunakan batas keamanan selama pengembangan: Seperti yang ditunjukkan sebelumnya, tambahkan counter iterasi maksimum saat menguji

11.3) Menggunakan break dan continue dalam while Loop

Python menyediakan dua pernyataan khusus yang memberi kamu kontrol lebih atas eksekusi loop: break dan continue. Pernyataan ini memungkinkan kamu mengubah alur normal sebuah loop berdasarkan kondisi yang muncul selama eksekusi.

11.3.1) Pernyataan break

Pernyataan break langsung mengakhiri loop, terlepas dari kondisi loop. Ketika Python menemui break, ia keluar sepenuhnya dari loop dan melanjutkan dengan kode setelah loop.

Berikut contoh sederhana:

python
# Keluar dari loop ketika nilai tertentu tercapai
count = 1
while count <= 10:
    if count == 5:
        print("Reached 5, stopping loop")
        break
    print(f"Count: {count}")
    count += 1
 
print("Loop exited")

Output:

Count: 1
Count: 2
Count: 3
Count: 4
Reached 5, stopping loop
Loop exited

Perhatikan bahwa begitu count sama dengan 5, pernyataan break dieksekusi, dan loop langsung berakhir. Loop tidak pernah mencapai count = 6 meskipun kondisi count <= 10 masih akan True.

Bagaimana break Mengubah Alur Loop

Memahami bagaimana break mengubah eksekusi loop normal itu penting. Berikut flowchart yang menunjukkan perbedaannya:

False

True

Ya

Tidak

Mulai Loop

Periksa kondisi while

Keluar Loop Secara Normal

Eksekusi kode badan loop

menemui break?

Keluar Loop Seketika

Lanjutkan ke akhir badan loop

Kode setelah loop

Poin kuncinya: break menyediakan jalur keluar segera dari loop, melewati sisa kode badan loop dan juga pengecekan kondisi.

Penggunaan Praktis break: Validasi Input

Salah satu penggunaan paling umum dari break adalah keluar dari loop ketika input yang valid diterima:

python
# Terus meminta input valid sampai diterima
while True:
    age_input = input("Enter your age (must be positive): ")
    
    # Coba konversi ke integer
    try:
        age = int(age_input)
        
        # Periksa apakah valid
        if age > 0:
            print(f"Thank you! Your age is {age}")
            break  # Keluar dari loop saat input valid
        else:
            print("Age must be positive. Please try again.")
    except ValueError:
        print("That's not a valid number. Please try again.")
 
print("Input validation complete")

Pola ini menggunakan while True: untuk membuat loop tak berujung yang disengaja, lalu menggunakan break untuk keluar ketika input valid diterima. Ini lebih rapi daripada mencoba mengelola kondisi loop yang rumit. (Catatan: Kita menggunakan try dan except di sini, yang akan kita pelajari detailnya di Bagian VII. Untuk sekarang, cukup pahami bahwa ini menangkap error saat mengonversi input menjadi integer.)

break dengan Banyak Kondisi

Kamu bisa menggunakan break dengan kondisi kompleks untuk keluar dari loop ketika salah satu dari beberapa kriteria terpenuhi:

python
# Mencari item tertentu dalam input pengguna
search_term = "python"
attempts = 0
max_attempts = 5
 
while attempts < max_attempts:
    user_input = input("Enter a word (or 'quit' to exit): ").lower()
    attempts += 1
    
    if user_input == 'quit':
        print("User requested exit")
        break
    
    if user_input == search_term:
        print(f"Found '{search_term}'!")
        break
    
    print(f"'{user_input}' is not '{search_term}'. Try again.")
    print(f"Attempts remaining: {max_attempts - attempts}")
 
if attempts >= max_attempts:
    print("Maximum attempts reached")

Loop ini bisa keluar dengan tiga cara:

  1. Pengguna memasukkan "quit" (break pertama)
  2. Pengguna memasukkan search term (break kedua)
  3. Percobaan maksimum tercapai (kondisi loop menjadi False)

11.3.2) Pernyataan continue

Pernyataan continue melewati sisa dari iterasi saat ini dan melompat kembali ke pengecekan kondisi loop. Berbeda dengan break yang keluar dari loop sepenuhnya, continue hanya melewati ke iterasi berikutnya.

Berikut contoh dasar:

python
# Cetak hanya angka ganjil dari 1 sampai 10
count = 0
while count < 10:
    count += 1
    
    if count % 2 == 0:  # Jika angka genap
        continue  # Lewati sisanya dan lanjut ke iterasi berikutnya
    
    print(f"Odd number: {count}")

Output:

Odd number: 1
Odd number: 3
Odd number: 5
Odd number: 7
Odd number: 9

Cara kerjanya:

  1. count bertambah di awal setiap iterasi
  2. Jika count genap (count % 2 == 0), continue dieksekusi
  3. Pernyataan continue melewati pernyataan print dan melompat kembali ke kondisi while
  4. Jika count ganjil, continue tidak dieksekusi, sehingga pernyataan print berjalan

Bagaimana continue Mengubah Alur Loop

Berikut flowchart yang menunjukkan bagaimana continue memengaruhi eksekusi loop:

False

True

Ya

Tidak

Mulai Loop

Periksa kondisi while

Keluar Loop

Eksekusi kode sebelum pengecekan continue

menemui continue?

Eksekusi sisa kode badan loop

Perbedaan krusial antara break dan continue:

  • break: Keluar dari loop sepenuhnya, melompat ke kode setelah loop
  • continue: Melewati sisa kode pada iterasi saat ini, melompat kembali ke pengecekan kondisi

Catatan Penting tentang Penempatan continue

Perhatikan bahwa count += 1 berada sebelum continue. Jika kita meletakkannya setelahnya, angka genap akan menyebabkan continue melewati increment, menciptakan loop tak berujung:

python
# PERINGATAN: Loop tak berujung - hanya untuk demonstrasi
# MASALAH: continue melewati increment untuk angka genap
count = 0
while count < 10:
    if count % 2 == 0:
        continue  # Melewati semuanya di bawah, termasuk count += 1
    count += 1  # KESALAHAN: Ini tidak pernah berjalan untuk angka genap
    print(f"Odd number: {count}")

Saat count adalah 0 (genap), continue dieksekusi, melewati count += 1. Loop memeriksa 0 < 10 lagi, dan siklus ini berulang selamanya.

Aturannya: Selalu pastikan variabel loop yang memengaruhi kondisi diperbarui sebelum pernyataan continue apa pun yang mungkin melewati sisa badan loop.

Penggunaan Praktis continue: Memfilter Data

Pernyataan continue berguna saat memproses data dan kamu ingin melewati item tertentu:

python
# Memproses hanya nilai yang valid
score_count = 0
total_score = 0
attempts = 0
 
while attempts < 5:
    score_input = input(f"Enter score {attempts + 1} (or 'skip' to skip): ")
    attempts += 1
    
    if score_input.lower() == 'skip':
        print("Skipping this score")
        continue  # Lewati ke iterasi berikutnya
    
    try:
        score = int(score_input)
        
        if score < 0 or score > 100:
            print("Score must be between 0 and 100. Skipping.")
            continue  # Lewati nilai yang tidak valid
        
        # Nilai valid - proses
        total_score += score
        score_count += 1
        print(f"Score recorded: {score}")
        
    except ValueError:
        print("Invalid input. Skipping.")
        continue
 
if score_count > 0:
    average = total_score / score_count
    print(f"\nAverage of {score_count} valid scores: {average:.1f}")
else:
    print("\nNo valid scores entered")

Contoh ini mendemonstrasikan beberapa penggunaan continue:

  • Lewati ketika pengguna memasukkan "skip"
  • Lewati ketika nilai di luar rentang valid
  • Lewati ketika input bukan angka yang valid

Setiap continue mencegah nilai ditambahkan ke total, tetapi loop tetap lanjut ke percobaan berikutnya.

Menggabungkan break dan continue

Kamu bisa menggunakan break dan continue dalam loop yang sama untuk kontrol yang lebih canggih:

python
# Memproses angka sampai jumlah melebihi 100, melewati angka negatif
total = 0
count = 0
 
while True:
    number_input = input("Enter a number (or 'done' to finish): ")
    
    if number_input.lower() == 'done':
        print("User finished entering numbers")
        break  # Keluar dari loop
    
    try:
        number = int(number_input)
        
        if number < 0:
            print("Negative numbers not allowed. Skipping.")
            continue  # Lewati ke iterasi berikutnya
        
        total += number
        count += 1
        print(f"Added {number}. Current total: {total}")
        
        if total > 100:
            print("Total exceeded 100. Stopping.")
            break  # Keluar dari loop saat batas tercapai
            
    except ValueError:
        print("Invalid input. Skipping.")
        continue
 
print(f"\nFinal total: {total} (from {count} numbers)")

Loop ini menunjukkan:

  • break untuk keluar saat pengguna mengetik "done"
  • continue untuk melewati angka negatif
  • continue untuk melewati input yang tidak valid
  • break untuk keluar saat total melebihi 100

11.4) Menggunakan else pada while Loop

Python punya fitur unik yang tidak dimiliki banyak bahasa pemrograman lain: kamu bisa menambahkan klausa else pada while loop. Blok else ini dieksekusi hanya jika loop selesai secara normal (artinya kondisi loop menjadi False tanpa menemui pernyataan break).

Sintaks else Dasar pada while

Sintaksnya terlihat seperti ini:

python
while condition:
    # Badan loop
else:
    # Ini hanya dieksekusi jika loop selesai secara normal
    # (tidak dihentikan oleh break)

Mari lihat contoh sederhana:

python
# Menghitung dari 1 sampai 5 dengan klausa else
count = 1
while count <= 5:
    print(f"Count: {count}")
    count += 1
else:
    print("Loop completed normally")
 
print("Program continues")

Output:

Count: 1
Count: 2
Count: 3
Count: 4
Count: 5
Loop completed normally
Program continues

Blok else dieksekusi karena loop berjalan sampai kondisinya (count <= 5) menjadi False. Loop selesai “secara normal” tanpa dihentikan.

Kapan else TIDAK Dieksekusi: Pernyataan break

Perilaku kunci dari klausa else adalah ia tidak dieksekusi jika loop diakhiri oleh pernyataan break:

python
# Mencari sebuah angka dengan break
count = 1
target = 3
 
while count <= 5:
    print(f"Checking: {count}")
    if count == target:
        print(f"Found {target}!")
        break
    count += 1
else:
    print("Target not found in range")
 
print("Search complete")

Output:

Checking: 1
Checking: 2
Checking: 3
Found 3!
Search complete

Perhatikan bahwa blok else ("Target not found in range") tidak dieksekusi karena loop dihentikan oleh break. Ini adalah perbedaan penting: else hanya berjalan ketika loop keluar secara normal (kondisi menjadi False), bukan ketika keluar lewat break.

Sekarang mari lihat apa yang terjadi ketika target tidak ditemukan:

python
# Mencari sebuah angka yang tidak ada
count = 1
target = 7  # Tidak ada dalam rentang 1-5
 
while count <= 5:
    print(f"Checking: {count}")
    if count == target:
        print(f"Found {target}!")
        break
    count += 1
else:
    print("Target not found in range")
 
print("Search complete")

Output:

Checking: 1
Checking: 2
Checking: 3
Checking: 4
Checking: 5
Target not found in range
Search complete

Kali ini, loop menyelesaikan semua iterasi tanpa menemukan target, sehingga kondisi count <= 5 akhirnya menjadi False, dan blok else dieksekusi.

Bagaimana else Bekerja dengan Penyelesaian Loop

Berikut flowchart yang menunjukkan jalur eksekusi dengan klausa else:

False

True

Ya

Tidak

Mulai

Periksa kondisi while

Eksekusi blok else

Eksekusi badan loop

menemui break?

Lewati blok else

Lanjutkan setelah loop

Blok else hanya dicapai ketika kondisi loop menjadi False secara alami. Jika break ditemui, alur langsung melompat melewati blok else ke kode setelah loop.

Penggunaan Praktis: Operasi Pencarian

Klausa else sangat berguna untuk operasi pencarian ketika kamu ingin tahu apakah sesuatu ditemukan:

python
# Mencari password valid dalam daftar percobaan
valid_password = "python123"
max_attempts = 3
attempts = 0
 
while attempts < max_attempts:
    password = input(f"Enter password (attempt {attempts + 1}/{max_attempts}): ")
    attempts += 1
    
    if password == valid_password:
        print("Access granted!")
        break
else:
    print("Access denied. Maximum attempts exceeded.")
    print("Account locked.")

Jika pengguna memasukkan password yang benar, break dieksekusi dan blok else dilewati. Jika semua percobaan habis tanpa sukses, loop selesai secara normal dan blok else dieksekusi, menandakan kegagalan.

else dengan continue

Pernyataan continue tidak mencegah blok else dieksekusi. Hanya break yang melakukan itu:

python
# continue tidak memengaruhi eksekusi else
count = 0
while count < 5:
    count += 1
    if count == 3:
        print(f"Skipping {count}")
        continue  # Lewati ke iterasi berikutnya
    print(f"Processing {count}")
else:
    print("Loop completed normally (continue doesn't prevent this)")

Output:

Processing 1
Processing 2
Skipping 3
Processing 4
Processing 5
Loop completed normally (continue doesn't prevent this)

Blok else dieksekusi karena loop selesai secara normal. Pernyataan continue hanya memengaruhi iterasi individual, bukan penyelesaian loop secara keseluruhan.

Membandingkan else dengan dan tanpa break

Mari lihat perbandingan berdampingan:

python
# Contoh 1: Menemukan bilangan pertama yang habis dibagi 7 (dengan break)
print("Finding first number divisible by 7:")
number = 1
while number <= 20:
    if number % 7 == 0:
        print(f"Found: {number}")
        break
    number += 1
else:
    print("No number divisible by 7 found in range")
print()
 
# Contoh 2: Memeriksa semua angka (tanpa break)
print("Checking all numbers for divisibility by 7:")
number = 1
while number <= 20:
    if number % 7 == 0:
        print(f"Found: {number}")
    number += 1
else:
    print("Finished checking all numbers")

Output:

Finding first number divisible by 7:
Found: 7
 
Checking all numbers for divisibility by 7:
Found: 7
Found: 14
Finished checking all numbers

Pada contoh pertama, break menghentikan loop setelah menemukan kecocokan pertama, jadi else tidak dieksekusi. Pada contoh kedua, loop memeriksa semua angka dan selesai secara normal, jadi else dieksekusi.

Kapan Menggunakan else pada while Loop

Klausa else paling berguna ketika:

  1. Operasi pencarian: Kamu ingin tahu apakah sesuatu ditemukan atau tidak
  2. Validasi dengan percobaan terbatas: Kamu perlu menangani kasus ketika semua percobaan habis
  3. Pemrosesan dengan keluar lebih awal: Kamu ingin perilaku berbeda untuk “menyelesaikan semuanya” vs “berhenti lebih awal”

Namun, else dengan loop bisa membingungkan bagi programmer yang datang dari bahasa lain (di mana fitur ini tidak ada). Kadang lebih jelas memakai variabel flag:

python
# Menggunakan klausa else
attempts = 0
while attempts < 3:
    password = input("Enter password: ")
    attempts += 1
    if password == "secret":
        print("Access granted")
        break
else:
    print("Access denied")
 
# Padanan menggunakan variabel flag (kadang lebih jelas)
attempts = 0
access_granted = False
while attempts < 3:
    password = input("Enter password: ")
    attempts += 1
    if password == "secret":
        print("Access granted")
        access_granted = True
        break
 
if not access_granted:
    print("Access denied")

Kedua pendekatan bekerja. Pilih yang membuat kode kamu lebih jelas untuk situasi spesifik kamu.

Memahami else dengan while loop memberi kamu satu alat lagi untuk menulis kode yang jelas dan ekspresif, terutama dalam skenario pencarian dan validasi ketika kamu perlu membedakan antara “ditemukan” dan “tidak ditemukan” atau “berhasil” dan “gagal setelah semua percobaan.”


Dalam bab ini, kita sudah mengeksplor while loop secara mendalam, mempelajari cara:

  • Menyusun loop yang mengulang kode berdasarkan kondisi
  • Menghindari loop tak berujung dengan memperbarui variabel loop dengan benar
  • Menggunakan break untuk keluar dari loop lebih awal saat dibutuhkan
  • Menggunakan continue untuk melewati iterasi berdasarkan kondisi
  • Menggunakan else untuk menangani kasus ketika loop selesai secara normal tanpa break

Alat-alat ini memberimu kontrol yang kuat atas pengulangan dalam program kamu. Di bab berikutnya, kita akan mempelajari for loop, yang menyediakan cara yang lebih nyaman untuk melakukan iterasi atas sequence seperti string, list, dan range.


© 2025. Primesoft Co., Ltd.
support@primesoft.ai