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:
while condition:
# Blok kode untuk diulang
# Kode ini berjalan selama condition bernilai Truecondition 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:
# 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:
- Kita menginisialisasi
countmenjadi1 - Kondisi
count <= 5diperiksa. Karena1 <= 5adalahTrue, badan loop dieksekusi - Di dalam loop, kita mencetak count saat ini lalu menambahkannya sebesar 1
- Setelah badan loop selesai, Python kembali ke pernyataan
whiledan memeriksa kondisi lagi - Proses ini berulang sampai
countmenjadi6, pada titik itu6 <= 5adalahFalse, dan loop berakhir - 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:
count = 10
while count <= 5:
print("This will never print")
print("Loop skipped entirely")Output:
Loop skipped entirelyKarena 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:
# 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: 55Dalam 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:
# 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:
# 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:
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:
# PERINGATAN: Loop tak berujung - hanya untuk demonstrasi
# MASALAH: count tidak pernah dimodifikasi
count = 1
while count <= 5:
print(f"Count is: {count}")
# Missing: count += 1Jika 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:
# Versi yang benar dengan penambahan yang tepat
count = 1
while count <= 5:
print(f"Count is: {count}")
count += 1 # Ini memastikan loop pada akhirnya berhentiOutput:
Count is: 1
Count is: 2
Count is: 3
Count is: 4
Count is: 5Debugging 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:
# 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:
# 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 berlanjutLoop 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:
# 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:
# 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 besarIni 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:
count = 1
while count <= 5:
print(f"Count is: {count}")
count += 1 # Benar: tambah agar akhirnya melebihi 5Debugging 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:
- Selalu pastikan kondisi loop bisa menjadi False: Pastikan variabel dalam kondisi dimodifikasi di dalam loop
- Gunakan operator perbandingan yang benar: Pastikan
<=,<,!=, dan lain-lain sesuai dengan maksudmu - Uji dengan nilai kecil terlebih dahulu: Sebelum menjalankan loop yang mungkin dieksekusi berkali-kali, uji dengan batas kecil
- Tambahkan pernyataan print untuk debug: Sementara waktu cetak variabel loop untuk melihat bagaimana ia berubah:
- 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:
# 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 exitedPerhatikan 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:
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:
# 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:
# 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:
- Pengguna memasukkan "quit" (
breakpertama) - Pengguna memasukkan search term (
breakkedua) - 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:
# 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: 9Cara kerjanya:
countbertambah di awal setiap iterasi- Jika
countgenap (count % 2 == 0),continuedieksekusi - Pernyataan
continuemelewati pernyataanprintdan melompat kembali ke kondisiwhile - Jika
countganjil,continuetidak dieksekusi, sehingga pernyataanprintberjalan
Bagaimana continue Mengubah Alur Loop
Berikut flowchart yang menunjukkan bagaimana continue memengaruhi eksekusi 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:
# 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:
# 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:
# 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:
breakuntuk keluar saat pengguna mengetik "done"continueuntuk melewati angka negatifcontinueuntuk melewati input yang tidak validbreakuntuk 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:
while condition:
# Badan loop
else:
# Ini hanya dieksekusi jika loop selesai secara normal
# (tidak dihentikan oleh break)Mari lihat contoh sederhana:
# 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 continuesBlok 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:
# 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 completePerhatikan 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:
# 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 completeKali 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:
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:
# 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:
# 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:
# 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 numbersPada 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:
- Operasi pencarian: Kamu ingin tahu apakah sesuatu ditemukan atau tidak
- Validasi dengan percobaan terbatas: Kamu perlu menangani kasus ketika semua percobaan habis
- 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:
# 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
breakuntuk keluar dari loop lebih awal saat dibutuhkan - Menggunakan
continueuntuk melewati iterasi berdasarkan kondisi - Menggunakan
elseuntuk menangani kasus ketika loop selesai secara normal tanpabreak
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.