Perulangan dengan While¶
Pada pernyataan kondisional, kode program masih dieksekusi dari atas ke bawah per baris. Perbedannya hanya ada pada apakah suatu blok kode dieksekusi atau tidak berdasarkan kondisi yang diberikan. Tapi, kita terkadang perlu juga untuk mengeksekusi sesuatu lebih dari satu kali dan berulang. Python membolehkan kita untuk melakukan hal tersebut dengan while
. [Lub19]
Perulangan¶
Misalkan diberikan sebuah daftar nama dalam bentuk list
berikut:
names = ["brown", "james", "jackson", "lee"]
Jika kita ingin menampilkan setiap nama yang ada pada names
, cara paling sederhana adalah dengan mengakses satu per satu indeks seperti di bawah ini.
names = ["brown", "james", "jackson", "lee"]
print(names[0])
print(names[1])
print(names[2])
print(names[3])
brown
james
jackson
lee
Masih bisa dilakukan jika jumlah elemennya tidak terlalu banyak. Tapi, akan buang-buang waktu dan merepotkan jika ternyata ada lebih dari 100 nama di dalamnya.
Dalam setiap bahasa pemrograman, kita bisa melakukan perulangan secara otomatis tanpa harus mendaftarkan semua elemen, begitu juga Python. Konsep ini dikenal dengan Don’t Repeat Yourself (DRY).
Apa Itu DRY?
DRY is a principle of software development aimed at reducing repetition of software patterns,[1] replacing it with abstractions or using data normalization to avoid redundancy. [Wik21]
Penggunaan while
¶
Untuk menggunakan while
kita perlu membuat kondisi yang selama kondisi itu benar (bernilai True
), blok kode dalam while
akan terus dieksekusi. Sintaks while
juga mirip dengan if
, yaitu
while condition:
# run statement here
Untuk contoh kasus di atas, tujuan kita adalah menampilkan setiap elemen yang ada dalam names
. Maka, kondisi yang menyebabkan perulangan berhenti adalah ketika tidak ada elemen lagi yang bisa diakses atau sampai indeks terakhir. Oleh karena itu, kita akan menggunakan jumlah elemen dalam names
sebagai batas perulangan. Langkah-langkah perulangannya adalah sebagai berikut:
Definisikan jumlah elemen (opsional, bisa langsung dalam kondisi).
Mulai dari indeks pertama atau
0
.Cek kondisi, selama indeks “saat ini” masih kurang dari jumlah elemen, lakukan langkah 4-6. Jika indeks “saat ini” sama dengan jumlah elemen, lakukan langkah 7.
Tampilkan indeks “saat ini”.
Tambah indeks untuk jadi indeks berikutnya.
Kembali ke langkah 3.
Jika langkah 3 terpenuhi, akhiri perulangan.
Dari langkah-langkah yang sudah ditulis di atas, sintaks yang perlu ditulis adalah:
num_names = len(names)
idx = 0
while idx < num_names:
print(names[idx])
idx += 1
Untuk mengujinya, jalankan saja cell di bawah ini.
num_names = len(names)
idx = 0
while idx < num_names:
print(names[idx])
idx += 1
brown
james
jackson
lee
Eksplorasi
Lakukan perulangan untuk names
dengan menggunakan indeks negatif.
Keluar dari while
dengan break
¶
Jika kita ingin melakukan perulangan sampai sesuatu terjadi, tapi kita tidak tahu kapan, kita bisa menggunakan pernyataan break
.
idx = 0
while idx < len(names):
if len(names[idx]) < 5:
break
print(names[idx])
idx += 1
idx = 0
while idx < len(names):
if len(names[idx]) < 5:
break
print(names[idx])
idx += 1
brown
james
jackson
Pernyataan while
di atas akan menampilkan nama yang ada dalam names
sampai bertemu dengan nama dengan jumlah karakter yang kurang dari 5. Itulah kenapa lee
tidak ditampilkan, yaitu karena jumlah karakter lee
hanya 3.
Pernyataan continue
dalam Perulangan¶
Selain kita bisa keluar dari sebuah blok kode perulangan, kita juga bisa melewati suatu baris pernyataan, jika kita tidak ingin keluar tapi hanya melewatkan suatu pernyataan dengan sengaja (skip). Ada pernyataan continue
yang bisa digunakan.
Dengan prinsip yang masih sama dengan break
, misalkan kita ingin melanjutkan menampilkan nama dalam names
meskipun ditemukan nama dengan jumlah karakter kurang dari 5. Kita bisa ganti break
di atas dengan continue
seperti di bawah ini.
names.append("johnson")
idx = 0
while idx < len(names):
if len(names[idx]) < 5:
idx += 1
continue
print(names[idx])
idx += 1
brown
james
jackson
johnson
Pada kode di atas, kita tidak “keluar” dari while
, tapi hanya melewati nama yang tidak memenuhi kondisi pada pernyataan if
. Satu hal yang membedakan continue
dengan break
pada kode di atas adalah perlunya increment indeks dalam blok kode if
. Ini dikarenakan continue
tidak keluar dari while
, tapi kembali ke atas untuk dilakukan pengecekan kondisi. Jika tidak ada penambahan indeks, maka nilai idx
akan selalu sama, sehingga perulangan menjadi tak hingga (infinite loop).
Note
Pada dasarnya, perulangan dengan while
tergolong ke dalam infinite loop karena kode akan dieksekusi selama kondisi terpenuhi. Oleh karena itu, perulangan while
memerlukan kondisi untuk berhenti dan logika kode supaya kondisi bisa jadi tidak terpenuhi (False
) sedemikian sehingga perulangan bisa berhenti.
Eksplorasi
Kuis: Buat perulangan dengan while
untuk membuat sebuah string news yang panjangnya 150 karakter dari kumpulan judul berita dalam headlines
yang setiap judul dipisahkan oleh spasi. Jika diperlukan, potong judul berita terakhir sedemikian hingga panjang keseluruhan news
tepat 150 karakter.
headlines = ["Pemprov DKI Perpanjang PPKM Mikro hingga 14 Juni",
"Manchester City Dekati Sergio Ramos",
"8 Juta Dosis Vaksin Sinovac Tiba di Tanah Air",
"10 Potret Kece Tatjana Saphira Berkacamata, Stylish Banget!",]
headlines = ["Pemprov DKI Perpanjang PPKM Mikro hingga 14 Juni",
"Manchester City Dekati Sergio Ramos",
"8 Juta Dosis Vaksin Sinovac Tiba di Tanah Air",
"10 Potret Kece Tatjana Saphira Berkacamata, Stylish Banget!",]
# KETIK DI SINI