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.

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu