Python’da “While” Döngüsü Nasıl Kullanılır?
Bu yazımızda, Python’da “while” döngüsünü ele alacağız.
“While” Döngüsü
Programlamanın ayrılmaz bir parçası olan döngüler, bir başka deyişle yinelemeler, bir koşulun doğru kalmaya devam ettiği müddetçe yapması istenilen bir dizi ifadeyi tekrarlamak anlamına gelir. Tekrarlanmanın sayısı ise ilgili test koşuluna bağlıdır. Bu yüzden tekrarlanacak olan şey, üzerinde düşünülerek kararlaştırılmalıdır.
Türkçede “… iken, … olduğu sürece” gibi anlamlara gelen while döngüsü, for döngüsü ile beraber Python’da kullanılan iki döngü yapısından biridir. Zaten Türkçe anlamından da anlaşılacağı üzere, kod bloğu içerisinde tanımlanan kodları koşul geçerli kalmaya devam ettikçe çalıştırır. Haliyle bu koşul sağlanmadığı anda ise döngü sonlanmaktadır. Python’daki while
döngüsünü yazmak için kullandığımız temel sözdizimi (syntax) şu şekildedir:
while koşul:
# koşul doğru olduğu sürece çalışacak kod bloğu
Bu yapıda koşul
, döngünün devam edip etmeyeceğini belirleyen bir ifadedir. Eğer bu koşul
ifadesi True
(doğru) ise kod bloğu çalıştırılır. Kod bloğu tamamlandıktan sonra, koşul
ifadesi tekrar değerlendirilir. Eğer hâlâ True
ise, kod bloğu tekrar çalıştırılır. Bu işlem, koşul
ifadesi False
(yanlış) olana kadar devam eder. Dolayısıyla ilgili koşulun hangi şartlarda çalışacağı düzgün bir şekilde belirlenmelidir. Örneğin:
sayac = 0
while sayac < 5:
print("Döngü", sayac + 1, ".kez çalışıyor.")
sayac += 1
"""
Çıktı:
Döngü 1 .kez çalışıyor.
Döngü 2 .kez çalışıyor.
Döngü 3 .kez çalışıyor.
Döngü 4 .kez çalışıyor.
Döngü 5 .kez çalışıyor.
"""
Yukarıdaki kodumuzda sayac
isimli bir değişken oluşturduk ve değerini 0 olarak belirledik. Koşulumuz tabiri cazise; “sayac
değişkeninin değeri 5’den küçük olduğu sürece…” anlamı vermekte ve sayac < 5
koşulu True
olduğu sürece döngü içindeki kodlar çalışacağını anlatmaktadır. Kod bloğunda ise her döngü turunda sayac
değişkeni 1 artmaktadır. (sayac += 1
) Böylece döngünün bir noktada sona ermesi gerektiğini belirlemiş oluyoruz. Eğer sayac
değerini arttırmamış olsaydık kod sonsuz bir döngüye (infinite loop) girmiş olacaktı ve hiç bitmeyecekti. Bu da işlemciyi sürekli çalıştırarak sistemi yavaşlatacak, belleği tüketecek ve programın bir yerden sonra yanıt vermemesine neden olacaktı.
“While” Döngüsünü Kullanırken Nelere Dikkat Etmeliyiz?
Sonsuz döngüler, dikkat edilmesi gereken bir konudur. Eğer while
döngüsü için belirlediğimiz koşul düzgün belirlenmezse programımız bir yerden sonra amiyane tabirle patlayacaktır. Bu yüzden, döngü içinde bir çıkış stratejisi oluşturmak oldukça önemlidir. Bunu en basit haliyle, her döngü turunda değişen ve en sonunda döngü koşulunu kontrol edecek bir değişkenle yapabiliriz. Örneğin, i += 1
ifadesi ile her döngü turunda i
değişkenini bir artırarak belirli bir sayıda döngüden sonra koşulun yanlış olmasını sağlayabiliriz.
“Peki, while döngüsünü ne zaman kullanmalıyız?” Belirli bir koşul sağlandığı sürece işlemleri yapmamıza olanak tanısa da, while döngüsünü koşulun ne zaman sona ereceğini tam olarak bilemediğimiz durumlarda tercih etmeliyiz. Örneğin, kullanıcıdan gelen veriyi işlemek gibi dinamik senaryolarda oldukça etkilidir. “For” döngüsü ise genellikle döngünün kaç kez çalışacağını veya ne zaman sona ereceğini bildiğimiz durumlarda kullanılır. Liste, dizi veya belirli bir aralık üzerinde işlem yapmak gibi durumlar için “for” döngüsü daha uygundur.
“While” Döngüsünde “Break” İfadesi
Türkçede “terk etmek, kırmak” gibi anlamlara gelen “break” kelimesi, Python’da döngüyü aniden sonlandırmak için kullanılır. Yani, bazen döngü koşulunu beklemeden döngüyü sonlandırmak gerekebilir. İşte böylesi durumlar için “break” komutu devreye girer. Yorumlayıcı, break
komutunu gördüğü anda sadece o an içinde bulunulan for
veya while
döngüsünü sonlandırır ve döngü bloğunun dışındaki kodlara devam eder.
i = 1
while i < 6:
print(i)
if (i == 4):
break
i += 1
"""
Çıktı:
1
2
3
4
"""
Yukarıdaki örnekte verilen Python kodu, i
değişkeni 1’den başlayarak 6’ya kadar olan sayıları ekrana yazdırıyor. Ne zaman ki i == 4
koşulu sağlanıyor işte o zaman break
komutu devreye giriyor ve döngüyü hemen sonlandırıyor.
“While” Döngüsünde “Continue” İfadesi
Türkçedeki “devam etmek” anlamına gelen continue
komutu, Python’da döngünün belirli bir noktasında işlemleri kesip döngüyü en baştan başlatmak için kullanılır. Yani, continue
komutu döngünün sadece o anki turunu sonlandırır ve döngü koşulu tekrar değerlendirilerek bir sonraki tura geçilir.
Örneğin, 1’den 5’e kadar olan sayıları yazdırmak istiyoruz, ancak 3’ü atlamak istiyorsak şu şekilde bir kod yazabiliriz:
i = 1
while i < 6:
if i == 3:
i += 1
continue
print(i)
i += 1
"""
Çıktı:
1
2
4
5
"""
Yukarıdaki örnekte, i
değişkeninin değeri 3 olduğunda continue
komutu çalışır ve döngünün o anki turunu sonlandırıp i += 1
ile i
değişkenini artırılır. Ardından, döngü koşulu tekrar değerlendirilir ve döngü devam eder. Bu sayede çıktıda 3 sayısını görmeyiz.
“While-Else” İfadesi
Python’da “while-else” yapısı, döngü koşulu False
olduğunda else
bloğunu çalıştırmak için kullanılır. Ancak burada önemli bir detay belirtmek gerekir: Eğer döngü break
komutu ile sonlandırılmışsa, else
bloğu çalışmaz. Yani, “else” kısmı yalnızca döngü koşulu doğal bir şekilde False
olursa devreye girer.
Bu yapı, döngünün belirli bir koşulda doğal bir şekilde sonlanması durumunda yapılacak ek işlemler için oldukça kullanışlıdır. Örneğin, belirli bir sayıya kadar saydıran bir döngü kurduğunuzda ve sayma işlemi bittiğinde ekrana bir mesaj yazdırmak istiyorsanız, “while-else” yapısını kullanabilirsiniz.
i = 1
while i < 4:
print(f"{i}. döngü turu")
i += 1
else:
print("Döngü tamamlandı.")
Yukarıdaki örneğimizde, döngü koşulu i < 4
olduğu için 1, 2, 3 sayıları ekrana yazdırılır. Koşul False
olunca da “Döngü tamamlandı.” mesajı ekrana yazdırılır.
Bu yapı her daim kullanılmıyor olsa da, belirli senaryolar için oldukça kullanışlıdır. Haliyle kodun okunabilirliğini ve anlaşılırlığını arttıran gerekli durumlarda, “while-else” yapısını gönül rahatlığıyla kullanabilirsiniz.