Ana içeriğe atla

Python Döngüleri Eğitimi

Python döngülerine kapsamlı bir giriş. While ve for döngüleri, iç içe döngüler, break ve continue anahtar sözcükleri, range işlevi ve daha fazlasını öğrenin ve pratik yapın!
Güncel 16 Nis 2026  · 15 dk. oku

range Python

Döngüler, Python’da ve diğer tüm programlama dillerinde önemlidir; çünkü bir kod bloğunu tekrar tekrar çalıştırmanıza yardımcı olurlar. Aynı kodu defalarca kullanmanız gereken durumlarla sık sık karşılaşırsınız, ancak aynı satırları tekrar tekrar yazmak istemezsiniz.

Bu Python döngüleri eğitiminde aşağıdaki konuları ele alacaksınız:

While Döngüsü

While döngüsü, programlamayı öğrenmeye başladığınızda muhtemelen ilk karşılaşacağınız döngülerden biridir. Adından da anlaşılacağı gibi, "while" sözcüğü bir "aralık" ya da "zaman dilimi" ile ilgilidir. Bildiğiniz gibi "döngü", tekrar tekrar yürüttüğünüz bir kod parçasına karşılık gelir.

Tüm bunları aklınızda tutarak while döngüsünün şu tanımını kolayca anlayabilirsiniz:

While döngüsü, uygulandığında, verilen bir koşul doğru kaldığı sürece bir kod parçasını tekrar tekrar çalıştıran bir programlama kavramıdır.

Yukarıdaki tanım, Python’da while döngüsü kurmak için gereken üç bileşeni de vurgular:

  • while anahtar sözcüğü;
  • True ya da False’a dönüşen bir koşul; ve
  • Tekrarlayarak çalıştırmak istediğiniz bir kod bloğu

Hepsi bu kadar!

Python’da While Döngüsü Nasıl Yazılır

Artık bir while döngüsü kurmak için nelere ihtiyacınız olduğunu biliyorsunuz; şimdi, kendi egzersizlerinize başlamadan önce while döngüsünün kullanıldığı gerçek bir örneğe bakalım! Aşağıdaki örneği inceleyin:

# Take user input
number = 2  

# Condition of the while loop
while number < 5 :  
    print("Thank you")
    # Increment the value of the variable "number by 1"
    number = number+1

# Thank you
# Thank you
# Thank you

Yukarıdaki kod oldukça basit bir while döngüsüdür: Düşününce, az önce okuduğunuz üç bileşenin hepsi mevcut: while anahtar sözcüğü, True ya da False’a dönüşen bir koşul (number < 5) ve tekrar tekrar çalıştırmak istediğiniz kod bloğu:

print("Thank you")
number = number + 1

Koda yakından bakarsanız, bir tamsayı 2’yi sakladığınız bir number değişkeni olduğunu görürsünüz. number 5’ten küçük olduğu için "Thank you" yazdırır ve number’ın değerini bir artırırsınız. number 5’ten küçük kaldığı sürece while döngüsü içindeki iki satırı yürütmeye devam edersiniz:

"Thank you"
"Thank you"

number’ın değeri 5 olana kadar "Thank you" ifadesini iki kez daha yazdırırsınız ve koşul artık True olarak değerlendirilmez. Koşul False olduğunda while döngüsünden çıkar ve programınızda başka kod varsa ona devam edersiniz. Bu örnekte başka kod olmadığından program durur.

Yukarıdaki örnek biraz temel düzeydedir; koşullu ifadeler (if koşulu) ekleyerek daha da özelleştirebilirsiniz. Şu örneğe bakın:

# Take user input
number = 2 

# Condition of the while loop
while number < 5 :  
    # Find the mod of 2
    if number%2 == 0:  
        print("The number "+str(number)+" is even")
    else:
        print("The number "+str(number)+" is odd")

    # Increment `number` by 1
    number = number+1

# The number 2 is even
# The number 3 is odd
# The number 4 is even

Şimdi pratik zamanı!

collatz() adlı bir fonksiyon yazın; kullanıcıdan bir tamsayı alıp number adlı bir değişkende tutsun. Eğer sayı çiftse number/2 sonucunu yazdırsın. Eğer sayı tekse, collatz() fonksiyonu 3 * number + 1 değerini hem yazdırsın hem de döndürsün. Program, number üzerinde collatz() fonksiyonunu döndürdüğü değer 1 olana kadar çağırmaya devam etsin.

Not: Bu aslında Collatz dizisinin bir uygulamasıdır. Kısaca, bir sayı seçip yukarıdaki hesaplamaları 1 sonucuna ulaşana kadar sürdürdüğünüz bir matematik problemidir.

Çözümü aşağıda bulabilirsiniz:

def collatz(number):
    # Is the mod of 2 equal to 0?
    if number % 2 == 0:
        print(number // 2)
        return number // 2

    # If the mod of 2 isn't equal to 0, print `3 * number + 1`
    elif number % 2 == 1:
        result = 3 * number + 1
        print(result)
        return result

# Input   
n = 5

# As long as `n` is not equal to `1`, run `collatz()`
while n != 1:
    n = collatz(int(n))

# 16
# 8
# 4
# 2
# 1

Python’ı Ücretsiz Öğrenmeye Başlayın

Introduction to Python

BeginnerSkill Level
4 sa
6.4M learners
Yalnızca dört saatte Python ile veri analizi temellerine hakim olun. Bu çevrimiçi kurs Python arayüzünü tanıtacak ve popüler paketleri keşfedecek.
See DetailsRight Arrow

For Döngüsü

For döngüsünü de while döngüsüyle benzer şekilde ele alabilirsiniz. Muhtemelen tahmin edeceğiniz gibi, "for" bileşeni, bir şeyi belirli sayıda kez yaptığınız anlamına gelir.

Tüm bunları aklınızda tutarak for döngüsünü şöyle tanımlayabilirsiniz:

For döngüsü, uygulandığında, bir diziye bağlı olarak bir kod parçasını belirli sayıda kez tekrar tekrar çalıştıran bir programlama kavramıdır.

While döngüsünün aksine, aktif bir koşul yoktur — yalnızca bir kod parçasını belirli sayıda kez yürütürsünüz. Başka bir deyişle, while döngüsü içerdiği kod bloğunu koşul True olduğu sürece çalıştırırken, for döngüsü kodu yalnızca belirli bir sayıda çalıştırır. Bu "çalıştırma sayısı" bir dizi ya da sıralı bir liste tarafından belirlenir.

While ve for döngüleri arasındaki farkı birazdan daha detaylı göreceksiniz; şimdilik bir for döngüsü oluşturmak için gereken parçalara odaklanın:

  • for anahtar sözcüğü
  • Bir değişken
  • in anahtar sözcüğü
  • Python kitaplığında yerleşik olan ve bir sayı dizisi oluşturan range() işlevi
  • Tekrarlayarak çalıştırmak istediğiniz kod

Python’da For Döngüleri

# Print "Thank you" 5 times
for number in range(5):
    print("Thank you")

# Thank you
# Thank you
# Thank you
# Thank you
# Thank you

Gördüğünüz gibi, önceki bölümdeki bileşenler bu küçük for döngüsü örneğinde geri dönüyor: for anahtar sözcüğü, number değişkeni, in anahtar sözcüğü, range() işlevi ve birden çok kez yürütmek istediğiniz kod, print("Thank you").

O kadar da zor değil, değil mi?

Kontrol akışınızı tanımlamak için iki değişken kullandığınız bir başka for döngüsü örneğini ele alalım:

languages = ['R', 'Python',  'Scala', 'Java', 'Julia']

for index in range(len(languages)):
   print('Current language:', languages[index])

# Current language: R
# Current language: Python
# Current language: Scala
# Current language: Java
# Current language: Julia

Gördüğünüz gibi, döngüyü for anahtar sözcüğüyle başlatıyorsunuz. Ardından index ve languages değişkenlerini, in anahtar sözcüğünü ve bir sayı dizisi oluşturmak için range() işlevini kullanıyorsunuz. Ayrıca bu durumda languages listesi sayısal olmadığından len() işlevini de kullanıyorsunuz. Tekrarlayarak çalıştırmak istediğiniz kod bir yazdırma ifadesidir: print('Current language :', languages[index]).

Yukarıdaki döngüde, len(languages) aralığındaki her indis için ilgili veri bilimi programlama dilini yazdırmak istiyorsunuz. len(languages) değeri 5’tir; dolayısıyla ifade şöyle de yazılabilir:

for index in range(5):
    print('Current language:', languages[index])

# Current language: R
# Current language: Python
# Current language: Scala
# Current language: Java
# Current language: Julia

Ve yine aynı sonucu elde edersiniz!

Python’da While ve For Döngülerinin Karşılaştırması

Şimdi, while ve for döngüleri arasındaki farkları tam olarak belirlemek için ilk while döngüsü örneğine geri dönelim. Yukarıda farkın koşulun var olup olmamasında yattığını okudunuz; peki bu fark koda nasıl yansır ve iki yaklaşım arasında nasıl geçiş yapabilirsiniz?

# Take user input
number = 2  

while number < 5 :
    print("Thank you")
    # Increment `number` by 1
    number = number+1

# Thank you
# Thank you
# Thank you

"Thank you" ifadesini daha kontrollü bir şekilde yazdırmak için for döngüsünü kullanabilirsiniz:

# Print "Thank you" 3 times
for number in range(3) :  
    print("Thank you")

# Thank you
# Thank you
# Thank you

While döngüsünü eşdeğer bir for döngüsüne dönüştürmenin ne kadar kolay olduğuna bakın.

Nasıl mı çalışıyor? Oldukça basit.

For döngüsünde, range işlevinin içindeki tamsayı, döngünün gövdesindeki kodun kaç kez çalışacağını belirleyen aralıktır.

Not: range() işlevindeki sayım 1’den değil 0’dan başlar. Yani yukarıdaki örnekte sayım 1,2,3 değil 0,1,2 şeklinde olmalıdır. Bilgisayar belleğinde sayım mantığı böyledir. Bu yüzden for döngüsü tasarlarken sayımın 1’den değil 0’dan başladığını aklınızda tutun.

İpucu: Bu durum Python’daki listeler için de geçerlidir. Python listeleri hakkında daha fazla bilgi için DataCamp’in En Yaygın 18 Python Liste Sorusu rehberine göz atabilirsiniz.

Şimdi for ve while döngüleri arasında bir başka ilginç fark daha var. For döngüsü while döngüsünden daha hızlıdır. Bunu anlamak için aşağıdaki örneğe bakmalısınız.

import timeit

# A for loop example
def for_loop():
    for number in range(10000) :  
        # Execute the below code 10000 times
        sum = 3+4
        #print(sum)

timeit.timeit(for_loop)

# 267.0804728891719
import timeit

# A while loop example
def while_loop():
    i =0
    while i<10000:
        sum = 3+4
        #print(sum)
        i+=1

timeit.timeit(while_loop)

# 884.9233417965908

Yukarıdaki kod parçalarında yaklaşık 10000 yinelemeli iki döngü var. İlk bakışta aynı görünüyorlar, ancak perde arkasında bu iki döngünün nasıl çalıştığını anlarsanız farkı görebilirsiniz. İpucu: timeit() işlevi fark konusunda size ipucu veriyor!

Unutmayın: Tüm Python kodu bir C derleyicisiyle derlenir; yani yukarıdaki kod önce bayt kodlarına ayrılır ve ardından alttaki C derleyicisi tarafından işlenir.

Yukarıdaki örnekte for döngüsünün yürütülmesi başladığında, Python yorumlayıcısı alttaki C derleyicisiyle iletişim kurar ve 10000 boyutunda bir liste nesnesi oluşturur. Ardından, listedeki 10000 öğenin her birinin indisine dokunmak için bir yineleyici çağırır.

Öte yandan while döngüsünün yürütülmesi herhangi bir liste nesnesi oluşturmaz. Bunun yerine, alttaki C derleyicisi i<10000 koşulu için boole karşılaştırma işlemini 9999 kez çağırır.

10000 elemanlı, önceden oluşturulmuş bir liste üzerinde yineleme yapmak, 9999 kez tekrarlanan bir boole işlemi yapmaktan derleyici için daha kolay olduğundan, for döngüsünün zaman performansı while döngüsünden daha iyidir. Bu durum yürütme süresine açıkça yansır: for döngüsünün tamamlanma süresi while döngüsünden çok daha kısadır.

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgU2V0IGBmaWJfbm9gIHRvIDU1LCB0aGUgbnVtYmVyIHVudGlsIHdoZXJlIHlvdSB3YW50IHRvIHByaW50XG5maWJfbm8gPSA1NVxuXG4jIFNldCBgZmlyc3Rfbm9gIHRvIDBcbmZpcnN0X25vID0gMFxuXG4jIFNldCBgc2Vjb25kX25vYCB0byAxXG5zZWNvbmRfbm8gPSAxXG5cbiMgU2V0IHRoZSBjb3VudGVyIGBjb3VudGAgdG8gMCBcbmNvdW50ID0gMFxuXG4jIHdoaWxlIGxvb3AgdG8gcHJpbnQgdGhlIGZpYm9uYWNjaSBzZXJpZXMgdW50aWwgdGhlIGBmaWJfbm9gXG53aGlsZSBmaXJzdF9ubyA8PSBmaWJfbm86XG4gICAgICAgIyBQcmludCBgZmlyc3Rfbm9gXG4gICAgICAgcHJpbnQoZmlyc3Rfbm8pXG4gICAgICAgXG4gICAgICAgIyBGaWJvbm5hY2NpIG51bWJlclxuICAgICAgIG50aCA9IGZpcnN0X25vICsgX19fX19fX19fX1xuICAgICAgIFxuICAgICAgICMgdXBkYXRlIHZhbHVlcyBvZiBgZmlyc3Rfbm9gIGFuZCBgc2Vjb25kX25vYFxuICAgICAgIGZpcnN0X25vID0gX19fX19fX19fX19fXG4gICAgICAgc2Vjb25kX25vID0gX19fXG4gICAgICAgXG4gICAgICAgIyBTZXQgY291bnRlciBgY291bnRgICsxXG4gICAgICAgX19fX19fX19fXyIsInNvbHV0aW9uIjoiIyBTZXQgYGZpYl9ub2AgdG8gNTUsIHRoZSBudW1iZXIgdW50aWwgd2hlcmUgeW91IHdhbnQgdG8gcHJpbnRcbmZpYl9ubyA9IDU1XG5cbiMgU2V0IGBmaXJzdF9ub2AgdG8gMFxuZmlyc3Rfbm8gPSAwXG5cbiMgU2V0IGBzZWNvbmRfbm9gIHRvIDEcbnNlY29uZF9ubyA9IDFcblxuIyBTZXQgdGhlIGNvdW50ZXIgYGNvdW50YCB0byAwIFxuY291bnQgPSAwXG5cbiMgd2hpbGUgbG9vcCB0byBwcmludCB0aGUgZmlib25hY2NpIHNlcmllcyB1bnRpbCB0aGUgYGZpYl9ub2BcbndoaWxlIGZpcnN0X25vIDw9IGZpYl9ubzpcbiAgICAgICAjIFByaW50IGBmaXJzdF9ub2BcbiAgICAgICBwcmludChmaXJzdF9ubylcbiAgICAgICBcbiAgICAgICAjIEZpYm9ubmFjY2kgbnVtYmVyXG4gICAgICAgbnRoID0gZmlyc3Rfbm8gKyBzZWNvbmRfbm9cbiAgICBcbiAgICAgICAjIHVwZGF0ZSB2YWx1ZXMgb2YgYGZpcnN0X25vYCBhbmQgYHNlY29uZF9ub2BcbiAgICAgICBmaXJzdF9ubyA9IGZpcnN0X25vXG4gICAgICAgc2Vjb25kX25vID0gbnRoXG4gICAgICAgXG4gICAgICAgIyBTZXQgY291bnRlciBgY291bnRgICsxXG4gICAgICAgY291bnQgKz0gMSJ9

Şimdi for döngüsünü deneyin! Yalnızca 55’e kadar olan sayıları göstermek istediğiniz için aralığı 0’dan 11’e kadar belirtmeniz gerekir; çünkü 55 dizideki 11. sayıdır.

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgSW5pdGlhbGl6ZSBgZmlyc3Rfbm9gIHRvIGAwYFxuZmlyc3Rfbm8gPSAwXG5cbiMgSW5pdGlhbGl6ZSBgc2Vjb25kX25vYCB0byBgMWBcbnNlY29uZF9ubyA9IDFcblxuIyBJbml0aWFsaXplIGBudW1iZXJzYFxubnVtYmVycyA9IF9fX19fX19fX19fXG5cbiMgRmluZCBhbmQgZGlzcGxheSBGaWJvbmFjY2kgc2VyaWVzXG5mb3IgbnVtIGluIF9fX19fX186XG4gICAgICAgICAgIGlmKG51bSA8PSAxKTpcbiAgICAgICAgICAgIyBVcGRhdGUgb25seSBgbnRoYFxuICAgICAgICAgICAgICAgICAgICAgIG50aCA9IF9fX1xuICAgICAgICAgICBlbHNlOlxuICAgICAgICAgICAjIFVwZGF0ZSB0aGUgdmFsdWVzIGBudGhgLCBgZmlyc3Rfbm9gIGFuZCBgc2Vjb25kX25vYFxuICAgICAgICAgICAgICAgICAgICAgIG50aCA9IGZpcnN0X25vICsgc2Vjb25kX25vXG4gICAgICAgICAgICAgICAgICAgICAgZmlyc3Rfbm8gPSBzZWNvbmRfbm9cbiAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRfbm8gPSBfX19fX19fX19fXG4gICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICMgUHJpbnQgYG50aGBcbiAgICAgICAgICAgcHJpbnQobnRoKSIsInNvbHV0aW9uIjoiIyBJbml0aWFsaXplIGBmaXJzdF9ub2AgdG8gYDBgXG5maXJzdF9ubyA9IDBcblxuIyBJbml0aWFsaXplIGBzZWNvbmRfbm9gIHRvIGAxYFxuc2Vjb25kX25vID0gMVxuICAgICAgICAgICBcbiMgSW5pdGlhbGl6ZSBgbnVtYmVyc2Bcbm51bWJlcnMgPSByYW5nZSgwLDExKVxuXG4jIEZpbmQgYW5kIGRpc3BsYXkgRmlib25hY2NpIHNlcmllc1xuZm9yIG51bSBpbiBudW1iZXJzOlxuICAgICAgICAgICBpZihudW0gPD0gMSk6XG4gICAgICAgICAgICMgVXBkYXRlIG9ubHkgYG50aGBcbiAgICAgICAgICAgICAgICAgICAgICBudGggPSBudW1cbiAgICAgICAgICAgZWxzZTpcbiAgICAgICAgICAgIyBVcGRhdGUgdGhlIHZhbHVlcyBgbnRoYCwgYGZpcnN0X25vYCBhbmQgYHNlY29uZF9ub2BcbiAgICAgICAgICAgICAgICAgICAgICBudGggPSBmaXJzdF9ubyArIHNlY29uZF9ub1xuICAgICAgICAgICAgICAgICAgICAgIGZpcnN0X25vID0gc2Vjb25kX25vXG4gICAgICAgICAgICAgICAgICAgICAgc2Vjb25kX25vID0gbnRoXG5cbiAgICAgICAgICAgIyBQcmludCBgbnRoYFxuICAgICAgICAgICBwcmludChudGgpIiwic2N0IjoiRXgoKS5oYXNfZXF1YWxfYXN0KFwiWW91IGRvbid0IG5lZWQgdG8gY2hhbmdlIHRoZSB2YWx1ZSBvZiBgZmlyc3Rfbm9gIVwiLCBjb2RlPVwiZmlyc3Rfbm8gPSAwXCIsIGV4YWN0PUZhbHNlKVxuRXgoKS5oYXNfZXF1YWxfYXN0KFwiWW91IGRvbid0IG5lZWQgdG8gY2hhbmdlIHRoZSB2YWx1ZSBvZiBgc2Vjb25kX25vYCFcIiwgY29kZT1cInNlY29uZF9ubyA9IDFcIiwgZXhhY3Q9RmFsc2UpXG5FeCgpLmNoZWNrX29iamVjdChcIm51bWJlcnNcIilcblxuRXgoKS5jaGVja19mb3JfbG9vcCgwKS5jaGVja19pdGVyKCkuaGFzX2VxdWFsX2FzdCgpXG5cbkV4KCkuY2hlY2tfZm9yX2xvb3AoMCkuY2hlY2tfYm9keSgpLmNoZWNrX2lmX2Vsc2UoMCkuY2hlY2tfdGVzdCgpLmhhc19lcXVhbF9hc3QoXCJEaWQgeW91IGNvcnJlY3RseSBjaGVjayB0aGF0IHRoZSBudW1iZXIgaXMgc21hbGxlciBvciBlcXVhbCB0aGFuIDE/XCIsIGNvZGU9XCJudW0gPD0gMVwiLCBleGFjdD1GYWxzZSlcbkV4KCkuY2hlY2tfZm9yX2xvb3AoMCkuY2hlY2tfYm9keSgpLmNoZWNrX2lmX2Vsc2UoMCkuY2hlY2tfYm9keSgpLmhhc19lcXVhbF9hc3QoXCJJdCBsb29rcyBsaWtlIHRoZSBjb250ZW50cyBvZiBgbnRoYCBhcmVuJ3QgY29ycmVjdC5cIiwgY29kZT1cIm50aCA9IG51bVwiLCBleGFjdD1GYWxzZSlcblxuRXgoKS5jaGVja19mb3JfbG9vcCgwKS5jaGVja19ib2R5KCkuY2hlY2tfZm9yX2xvb3AoMCkuY2hlY2tfaXRlcigpLmhhc19lcXVhbF9hc3QoXCJJdCBsb29rcyBsaWtlIHRoZSBjb250ZW50cyBvZiBgbnRoYCBhcmVuJ3QgY29ycmVjdC5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZT1cIm50aCA9IGZpcnN0X25vICsgc2Vjb25kX25vXCIsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD1GYWxzZSlcbkV4KCkuY2hlY2tfd2hpbGUoMCkuY2hlY2tfYm9keSgpLmhhc19lcXVhbF9hc3QoXCJJdCBsb29rcyBsaWtlIHRoZSBjb250ZW50cyBvZiBgZmlyc3Rfbm9gIGFyZW4ndCBjb3JyZWN0LlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlPVwiZmlyc3Rfbm8gPSBzZWNvbmRfbm9cIiwgZXhhY3Q9RmFsc2UpXG5FeCgpLmNoZWNrX2Zvcl9sb29wKDApLmNoZWNrX2JvZHkoKS5jaGVja19pZl9lbHNlKDApLmNoZWNrX29yZWxzZSgpLmhhc19lcXVhbF9hc3QoXCJJdCBsb29rcyBsaWtlIHRoZSBjb250ZW50cyBvZiBgc2Vjb25kX25vYCBhcmVuJ3QgY29ycmVjdC5cIixjb2RlPVwic2Vjb25kX25vID0gbnRoXCIsIGV4YWN0PUZhbHNlKVxuXG5FeCgpLmNoZWNrX2Zvcl9sb29wKDApLmNoZWNrX2JvZHkoKS50ZXN0X2Z1bmN0aW9uKFwicHJpbnRcIiwgZG9fZXZhbD1GYWxzZSwgY29weT1GYWxzZSkifQ==

İç İçe Döngüler

Yukarıdaki bir örnekte, while döngüsünün içinde ek koşullar tanımlamanızı sağlayan bir if-else koşulu olduğunu fark etmişsinizdir.

Bir dakika!

Döngünüzü özelleştirmenin tek yolu bu değil. Mevcut kodunuzun içine bir veya daha fazla while döngüsü daha ekleyebilirsiniz; buna iç içe döngü denir. Yukarıdaki örneği aşağıdaki gibi başka bir while döngüsünü içerecek şekilde düzenleyebilirsiniz:

# Take user input
number = 2 

# condition of the while loop
while number < 5 :  
    # condition of the nested while loop    
    while number % 2 == 0: 
        print("The number "+ str(number)+" is even")

Yukarıdaki örnekte, dış döngünün içinde "iç içe" bir başka while döngüsü vardır; bu iç döngü, number % (mod) 2 değerinin 0 olup olmadığını kontrol eder.

Başka bir deyişle, sayının çift olup olmadığını kontrol eder ve "The number is even" ifadesini yazdırır.

Ancak bir püf noktası var: Dikkatli bakarsanız, önceki koddaki number=number+1 ifadesinin bu kez eksik olduğunu görürsünüz. Değişkeni hiçbir yerde artırmadığınız için her seferinde aynı değerde kalır ve kod sonsuz döngüye girer. Yani döngüye bir kez girdikten sonra asla çıkmaz ve number değişkeni her zaman 2 olduğu için ifadeyi sonsuz kez yazdırır. Bu sayı elbette 5’ten küçüktür ve çifttir.

Şimdi bir iç içe for döngüsünün nasıl görüneceğine bakalım:

# Print the below statement 3 times
for number in range(3) :  
    print("-------------------------------------------")
    print("I am outer loop iteration "+str(number))
    # Inner loop
    for another_number in range(5):  
        print("****************************")
        print("I am inner loop iteration "+str(another_number))
-------------------------------------------
I am outer loop iteration 0
****************************
I am inner loop iteration 0
****************************
I am inner loop iteration 1
****************************
I am inner loop iteration 2
****************************
I am inner loop iteration 3
****************************
I am inner loop iteration 4
-------------------------------------------
I am outer loop iteration 1
****************************
I am inner loop iteration 0
****************************
I am inner loop iteration 1
****************************
I am inner loop iteration 2
****************************
I am inner loop iteration 3
****************************
I am inner loop iteration 4
-------------------------------------------
I am outer loop iteration 2
****************************
I am inner loop iteration 0
****************************
I am inner loop iteration 1
****************************
I am inner loop iteration 2
****************************
I am inner loop iteration 3
****************************
I am inner loop iteration 4

Yukarıdaki kod, ilk for döngüsü örneğinin değiştirilmiş hâlidir. Dış döngünün içinde ikinci bir for döngüsü kullanıldığına dikkat edin.

Devam edin ve kodu çalıştırın.

Göreceksiniz ki önce dış for döngüsüne girilir ve number değişkeninin değeri 0 olarak başlatılır. İlk print ifadesi yazdırılır ve kontrol ikinci for döngüsüne geçer; burada another_number değişkeninin değeri 0 olarak başlatılır. İkinci for döngüsündeki ilk print ifadesi bir kez yazdırılır.

Ardından kontrol tekrar iç döngüye döner ve another_number değeri bir sonraki tamsayıya ayarlanır; print() işlevindeki ifade yazdırılır.

Bu süreç, kontrol range() işlevinin sonuna (bu durumda 5) ulaşana kadar devam eder; sonra kontrol tekrar en dış döngüye döner, number değişkenini bir sonraki tamsayıya ayarlar, print() içindeki ifadeyi yazdırır, iç döngüyü ziyaret eder ve range() işlevi tamamlanana kadar tüm adımları tekrarlar.

Kontrolün en dış döngüden iç döngüye gidip tekrar dış döngüye dönmesi yolculuğu, tüm aralık kapsanana kadar sürer; sizin durumunuzda bu 3 kezdir.

İç içe döngülerle ilgili açıklamaları okuduğunuza göre, sıra sizde! Aşağıdaki deseni iç içe for döngüsüyle oluşturan bir Python programı yazın: loops Python

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgSW5pdGlhbGl6ZSB0aGUgZmlyc3QgZml2ZSByb3dzXG5uID0gX1xuXG4jIFN0YXJ0IHRoZSBsb29wIHRvIHByaW50IHRoZSBmaXJzdCBmaXZlIHJvd3NcbmZvciBpIG4gcmFuZ2UoXyk6XG4gICAgZm9yIGogaW4gcmFuZ2UoaSk6XG4gICAgICAgIHByaW50KCcqICcsIGVuZD1cIlwiKVxuICAgIHByaW50KCcnKVxuXG4jIFN0YXJ0IHRoZSBsb29wIHRvIHByaW50IHRoZSByZW1haW5pbmcgcm93cyBpbiBkZWNyZWFzaW5nIG9yZGVyIG9mIHN0YXJzXG5mb3IgaSBpbiByYW5nZShuLDAsLTEpOlxuICAgIGZvciBqIGluIHJhbmdlKF8pOlxuICAgICAgICBwcmludCgnKiAnLCBlbmQ9XCJcIilcbiAgICBwcmludCgnJykiLCJzb2x1dGlvbiI6IiMgSW5pdGlhbGl6ZSB0aGUgZmlyc3QgZml2ZSByb3dzXG5uID0gNVxuXG4jIFN0YXJ0IHRoZSBsb29wIHRvIHByaW50IHRoZSBmaXJzdCBmaXZlIHJvd3NcZm9yIGkgaW4gcmFuZ2Uobik6XG4gICAgZm9yIGogaW4gcmFuZ2UoaSk6XG4gICAgICAgIHByaW50KCcqICcsIGVuZD1cIlwiKVxuICAgIHByaW50KCcnKVxuXG4jIFN0YXJ0IHRoZSBsb29wIHRvIHByaW50IHRoZSByZW1haW5pbmcgcm93cyBpbiBkZWNyZWFzaW5nIG9yZGVyIG9mIHN0YXJzXG5mb3IgaSBpbiByYW5nZShuLDAsLTEpOlxuICAgIGZvciBqIGluIHJhbmdlKGkpOlxuICAgICAgICBwcmludCgnKiAnLCBlbmQ9XCJcIilcbiAgICBwcmludCgnJykiLCJzY3QiOiJFeCgpLmhhc19lcXVhbF9hc3QoXCJJbml0aWFsaXplIHRoZSB2YWx1ZSBvZiBgbmAgYXQgNSFcIiwgY29kZT1cIm4gPSA1XCIsIGV4YWN0PUZhbHNlKVxuXG5FeCgpLmNoZWNrX2Zvcl9sb29wKDApLmNoZWNrX2l0ZXIoKS5oYXNfZXF1YWxfYXN0KFwicmFuZ2UobilcIilcbkV4KCkuY2hlY2tfZm9yX2xvb3AoMCkuY2hlY2tfYm9keSgpLmNoZWNrX2Zvcl9sb29wKDApLmNoZWNrX2l0ZXIoKS5oYXNfZXF1YWxfYXN0KFwicmFuZ2UoaSlcIilcbkV4KCkuY2hlY2tfZm9yX2xvb3AoMCkuY2hlY2tfYm9keSgpLmNoZWNrX2Zvcl9sb29wKDApLmNoZWNrX2l0ZXIoKS5oYXNfZXF1YWxfYXN0KFwicHJpbnQgKCcqICcsIGVuZD1cXFwiXFxcIilcIilcbkV4KCkuY2hlY2tfZm9yX2xvb3AoMCkuY2hlY2tfYm9keSgpLnRlc3RfZnVuY3Rpb24oXCJwcmludFwiLCAxKVxuXG5FeCgpLmNoZWNrX2Zvcl9sb29wKDEpLmNoZWNrX2l0ZXIoKS5oYXNfZXF1YWxfYXN0KFwicmFuZ2UobiwwLC0xKVwiKVxuRXgoKS5jaGVja19mb3JfbG9vcCgxKS5jaGVja19ib2R5KCkuY2hlY2tfZm9yX2xvb3AoMCkuY2hlY2tfaXRlcigpLmhhc19lcXVhbF9hc3QoXCJyYW5nZShpKVwiKVxuRXgoKS5jaGVja19mb3JfbG9vcCgxKS5jaGVja19ib2R5KCkuY2hlY2tfZm9yX2xvb3AoMCkuY2hlY2tfaXRlcigpLmhhc19lcXVhbF9hc3QoXCJwcmludCAoJyogJywgZW5kPVxcXCJcXFwiKVwiKVxuRXgoKS5jaGVja19mb3JfbG9vcCgxKS5jaGVja19ib2R5KCkudGVzdF9mdW5jdGlvbihcInByaW50XCIsIDEpIn0=

break ve continue Anahtar Sözcükleri: Sonsuz Döngüler Oluşturmak

Oluşturduğunuz herhangi bir döngüde break ve continue kullanabilirsiniz. Bu anahtar sözcükler yalnızca kasıtlı sonsuz döngüleri kırmakla sınırlı değildir, ancak dikkatli kullanılmalıdır. Her iki anahtar sözcük de döngüdeki kontrol akışını ve koşulun nerede bittiğini başkalarının —ve birkaç ay sonra koda geri dönen sizin— anlamasını zorlaştırır. Ayrıca, break ve continue kullanmanıza gerek yoktur: Şimdiye kadar gördüğünüz gibi, onsuz da gayet iyi ilerleyebildiniz!

Ancak bazı durumlarda, şimdiye kadar gördüğünüz geleneksel for ve while döngüleri yerine kasıtlı sonsuz döngüler yazmak daha anlaşılır olabilir. Elbette bu durumlarda bu anahtar sözcüklerin kullanımı teşvik edilir!

Python’da While Döngülerinde Break ve Continue

Neyse ki, yukarıdaki sonsuz döngü durumundan çıkmanın bir yolu vardır: break anahtar sözcüğünü kullanmak.

# Take user input
number = 2 

# Condition of the while loop
while number < 5 :  
    # condition of the nested while loop
    while number % 2 == 0:  
        print("The number "+str(number)+" is even")
        break

    number+=1

Yukarıdaki kodu çalıştırdığınızda artık sonsuz döngüye girmez.

"Bu nasıl bir sihir!" diye haykırmayın. — Sakin olun, sihir değil.

Olan şu: Kontrol break anahtar sözcüğüyle karşılaştığında, döngüden (bu örnekte iç döngüden) çıkması ve bir sonraki kod satırını yürütmesi gerektiğini anlar. Böylece iç while döngüsünden çıkar, dış döngüye geçer ve dış while döngüsünün koşulu doğru olduğu sürece normal akışına devam eder.

break anahtar sözcüğünden sonra bir kod satırının bulunması gerektiğini unutmamalısınız; aksi halde etkisi olmaz. Yukarıdaki örnekte break ifadesinden sonraki kod satırını kaldırıp çalıştırmayı deneyin.

Peki break ifadesinden sonra gizlice continue anahtar sözcüğünü eklerseniz ne olur? Aşağıdaki kodu izleyebilirsiniz:

number = 2 

while number < 5 :
    while number % 2 == 0: 
        print("The number "+str(number)+" is even")
        break

    continue

    number+=1

Yukarıdaki kod, break örneğinin biraz değiştirilmiş hâlidir.

Bu kodu çalıştırdığınızda tekrar bir sonsuz döngüyle karşılaşırsınız. Saçınızı başınızı yolmadan önce yakından bakın. break’ten hemen sonra bir continue anahtar sözcüğü olduğunu fark edeceksiniz. continue, number değişkeni artırılmadan kontrolü en dış döngüye geri verir; bu yüzden kod sonsuz döngüye girer.

For Döngülerinde Break ve Continue

Yukarıdaki örnekte iç for döngüsünü tüm aralık için yürütmek istemeseydiniz ne olurdu? While döngüsünde yaptığınız gibi, benzer şekilde bir break ifadesi kullanabilirsiniz.

# Print the below statement 3 times
for number in range(3) : 
    print("-------------------------------------------")
    print("I am outer loop iteration "+str(number))
    for another_number in range(3):
        print("****************************")
        print("I am inner loop iteration "+str(another_number))
        break

Yukarıdaki örnekte, iç döngüden sonraki break anahtar sözcüğü kontrolü iç döngüden çıkmaya zorlar; ardından kontrol dış döngüye geri döner.

Aşağıdaki kod örneğini çalıştırın:

# Print the below statement 3 times
for number in range(3) :  
    print("-------------------------------------------")
    print("I am outer loop iteration "+str(number))
    continue
    for another_number in range(3):
        print("****************************")
        print("I am inner loop iteration "+str(another_number))
        break

Yukarıdaki kodda yalnızca en dıştaki döngü çalışır ve kontrol iç döngüye hiç girmez.

"Neden?" diye sorabilirsiniz.

Koda yakından bakın. En dış döngüdeki ikinci print ifadesinden hemen sonra bir continue anahtar sözcüğü var. Bu ifade, kontrolün dış for döngüsüne geri dönüp baştan başlamasını söyler; bu yüzden kontrol iç döngüye hiç dokunmaz.

While döngüsünden farklı olarak, for döngüsünde break anahtar sözcüğünden sonra ek bir koda ihtiyacınız yoktur. For döngüsünde tek başına bir break gayet iyi çalışır.

range() ve xrange() Karşılaştırması

Bu iki işlev birbirine benzer, ancak Python 3 kullanıyorsanız yalnızca range() işlevi mevcuttur. Python 3.x’te xrange() işlevinin adı range() olarak değiştirilmiştir. Yani Python 3 ile xrange() kullanmaya çalışırsanız NameError: name 'xrange' is not defined hatası alırsınız.

Bu iki işlevin nasıl benzer olduğunu anlamak için aşağıdaki örneği inceleyin:

# Print the below statement 3 times
for number in range(5,10,2) :  
    print("I am number : "+str(number))

# I am number : 5
# I am number : 7
# I am number : 9

Yukarıdaki kodu çalıştırdığınızda, number değişkeninin değerinin 2’şer atlandığını görürsünüz; bunun nedeni range() işlevindeki parametrelerdir.

Bu işlevdeki ilk parametre başlangıç parametresidir; sayımın başladığı noktadır. İkinci parametre durdurma parametresidir; kontrolün durması gereken yerdir. Son parametre ise adım değeridir; sayım sırasında kontrolün hangi faktörle atlayacağını belirler.

Dolayısıyla yukarıdaki durumda kontrol 5’ten başlar, her sayımda 2 ekleyerek 9’a kadar döngüyü dolaşır. Yani 5, 5+2=7, 7+2=9.

range() işlevinin, kodunuzun kaç kez döngüye gireceğini tanımlamak için nasıl kullanıldığını öğrendiniz. Python 2.x’te bunu yapmanın bir başka yolu daha vardır: xrange() işlevi. Aşağıdaki kodu çalıştırın:

# Print the below statement 3 times
for number in xrange(10) :  
    print("I am number : "+str(number))
I am number : 0
I am number : 1
I am number : 2
I am number : 3
I am number : 4
I am number : 5
I am number : 6
I am number : 7
I am number : 8
I am number : 9

Yukarıdaki kodun çıktısı ile xrange() kullanılmayan kodun çıktısı arasında ne fark gördünüz? Hiç mi?

Doğru. Kod çıktısında bir fark görmezsiniz.

Öyleyse neden xrange() kullanmalısınız? Eğitimin ilerleyen kısmında buna geleceksiniz. Önce aşağıdaki kodu çalıştırın:

print(xrange(10))
print(range(10))
xrange(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Gördüğünüz gibi, iki print ifadesinin çıktısı arasında fark var. xrange() içeren print ifadesinde xrange() işlev nesnesi yazdırılır. range() içeren print ifadesinde ise 0’dan 9’a kadar tamsayılardan oluşan bir liste elde edersiniz.

İşte range() ile xrange() arasındaki fark tam olarak budur.

range() işlevini tanımladığınızda, tüm aralığın listesi RAM’de saklanır ve size sunulur. Oysa xrange() tanımlandığında, liste bellekte saklanmaz; bunun yerine xrange() ihtiyacınız olduğunda aralıktaki tamsayıları üretir. Bu sayede xrange(), kaynağı kısıtlı sistemlerde belleği korumaya yardımcı olur.

Python Becerilerinizi Geliştirin!

Tebrikler, bu eğitimin sonuna geldiniz. Artık Python’da döngüleri nasıl kullanacağınızı öğrendiğinize göre, pratik yapmaya başlayın. Ne kadar çok pratik yaparsanız o kadar iyi!

Konular

İlgili Python Kursları

Kurs

Python’a Giriş

4 sa
6.8M
Python ile veri analizi temellerini sadece dört saatte öğrenin. Bu çevrimiçi kurs, Python arayüzünü tanıtacak ve popüler paketleri keşfedecektir.
Ayrıntıları GörRight Arrow
Kursa Başla
Devamını GörRight Arrow