Skip to content

Python'da Döngüler

Python’da Döngüler

While Döngüsü

Genel yapısı

while <expr>:
    <statement(s)>

olup while döngüsü bir şart ile çalışan döngüdür, tıpkı if, elif veya else gibi while döngüsünün de önemsediği tek şey verilen şartın doğru olup olmadığıdır, eğer doğru ise çalışmaya devam eder, yanlış ise çalışmaz bu gibi yapılara karşı yanlış yapamazsınız, yaptınız an sizinle işinin bittiği andır.

Örneğin aşağıda bir while döngüsüne karşı yanlış yapalım bakalım bizi affedebilecek mi?

while False:
    print("İnsansın sonuçta bana karşı yanlış yapabilirsin, önemli değil ben çalışmaya devam edebilirim")

çalıştırın bakalım içinde düşündüğü gibi sonuç verecekmi ? tabikide hayır bu yapılara yanlış yaparsanız affınız olmaz.

şimdide ona karşı doğru şeyler yapalım bakalım ne diyecek.

while True:
    print("Bana iyi davrandığın için teşekkürler ben her zaman senin arkadaşın olacağım")

yukarıdaki kodu çalıştırdığınızda siz arkadaşlığınızı kesene kadar \( kapatana kadar \) çalışmaya devam edip sizin arkadaşınız olacaktır.

islecler-ve-print-fonksiyonu bu yazımda diğer bool değerleri nasıl elde edildiğini python’un onları nasıl anladığını ve her nesnenin veya değerin bir bool değeri olduğundan bahsetmiştim, yukarıda True veya False yazdığımız yerlere bu içeriktek öğrendiğiniz şekilde yazarsanız yazdığınız şartın bool değerine bakıp True ise çalışmaya devam edip False ise çalışmayacaktır yine aynı şekilde, bu anlattığım konuları ayrı ayrı tutmak yerine bağdaştırın.

While Örneği
password = "123"
while (password != str(input("lütfen şifrenizi yazınız >> "))):
    pass

yukarıdaki örneği inceleyelim;

  • Bir şifre belirledik

password = “123”

  • Şart olarak girilen yazının bizim şifremize eşit olmama durumunu yazdık

\(password != str\(input\("lütfen şifrenizi yazınız >> "\))) şart olarak

  • Şart gereği şifre doğru değilse ise çalışmaya devam edecektir.
  • Hiç bir şey yapmadan çalışmaya devam etmesi için pass keyword’unu kullandık.
  • Şart sağlandığı anda yani şifreler eşleştiği anda verilen şart doğru olmadığı zamanlar çalış dediği için doğru olduğunda çalışmayı bıraktı.

eğer aşağıdaki gibi yazıp bıraksaydım hata alırdım çünkü while döngüsü ne iş yapacak ? o kısmı kodlamamışım hata verir bu yüzden.

password = "123"
while (password != str(input("lütfen şifrenizi yazınız >> "))):

pass yerine aşağıdaki gibi de yapabilirdik.

password = "123"
while (password != str(input("lütfen şifrenizi yazınız >> "))):
    "Bu döngü ile şifre doğrulaması yapıyoruz"

Not; döngüler içinde if, elif, else döngüler gibi yapıları kullanabilirsiniz anlatılan herşeyi bağdaştırın ve bunu bir dil olduğunu unutmayın diller esnektir istediğinizi yapmakta özgürsünüz.

örnek olarak

stop = False
count = 0
while not stop:
    count += 1
    print("count", count, "stop", stop)
    if count == 10:
        while count:
            print("count", count, "stop", stop)
            count -= 1
        stop = True
        print("count", count, "stop", stop)

For Döngüsü

For döngümüz aslında gelişmiş bir while döngüsüdür genel yapısı

for <değişken ismimiz> in <list veya str veya tuple>:
    <statement(s)>

for döngümüzde <list, str, tuple veya dict> bu kısım kısacası iterator bir nesne olması gerekiyor.

Iteratorlerin Çalışma Mantığı
>>> x = iter([1, 2, 3]) # x değişkenimiz artık bir iterator
>>> x
<listiterator object at 0x1004ca850>
>>> x.next() # iterator nesnemizin altındaki next fonksiyonun her çağırmamızda bir sonraki öğeyi döndürür bize
1
>>> x.next()
2
>>> x.next()
3
>>> x.next() # öğe bitince hata verecektir
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration

Burda iter built-in fonksiyonlarından olup iterable bir nesne alır ve iterator olarak döndürür \( return \)

aslında bu anlatılanlar for döngüsünün çalışma mantığıdır, sizde while döngüsünü kullanarak bir for döngüsü elde edebilirsiniz.

For Döngüsüne Örnekler
Str Iterator
for i in "1234":
    print(i)

Burdaki her bir döngümüzde i değerimiz sırası ile 1, 2, 3 ve 4 olacaktır.

Bu örnekte anlayacağınız gibi for döngüleri verilen iterator’ün uzunlukları kadar çalışırlar bir şarta ihtiyaçları yoktur.

list Iterator
my_list = ["1", "2", "3"]
for i in my_list:
    print(i)

Burda mesela eleman sayım 3 o zaman for döngüsü 3 defa çalışacak ve her çalışmasında ["1", "2", "3"] iterator’e çevirdiği bu nesnenin altındaki next() methodunu kullanarak i değişkenimiz sırası ile 1, 2 ve 3 olacaktır.

Dict Iterator
my_dict = dict(a=1, b=2, c=3)
for key, value in my_dict.items():
    print(key, value)

Burdaki eleman sayım yine 3, for döngüsü 3 defa çalışacak, bu sefer i yerine key, valueadında iki tane değişken kullanıyorum çünkü iteratorüm bir sözlük ve her next çalışmasında bana key’, ve value’su olacak şekilde bir tuple döndürecektir.

Not her döngüde kullanılan ‘i’ index’in baş harfi olan ‘i’ dir, genel olarak bu şekilde kullanılır, tabi burdaki değişken ismini istediğiniz gibi seçebilirsiniz.

İlgili Fonksiyonlar, Keywordler

Range

Range bir built-in fonksiyonu olup parametrelere olarak girilen sayıları alıp bir iterator döndürür.

>>> for i in range(5):
...     print(i)
...
0
1
2
3
4

Yukarıdaki ilgili yere aşağıdaki örnekler ile yer değiştirirseniz alacağınız sonuçları ile birlikte yazılmıştır.

range(5, 10)
   5, 6, 7, 8, 9

range(0, 10, 3)
   0, 3, 6, 9

range(-10, -100, -30)
  -10, -40, -70

Veya değişken türümüzün list olduğu bir örnek yapalım

>>> a = ['Mary', 'had', 'a', 'little', 'lamb']
>>> for i in range(len(a)):
...     print(i, a[i])
...
0 Mary
1 had
2 a
3 little
4 lamb

Burdaki len fonksiyonu parametre olarak verilen değişkenin uzunluğunu, eleman sayısını döndürür.

burda her bir döngüde i değişkeni 0, 1 … olurken a[i] şeklinde yazarak listemizin elemanlarını alıyoruz

Not: Bir iterator’ü list tipimizin içine atarsak onu listeye çevirir.

>>> list(range(5))
[0, 1, 2, 3, 4]
Break

Break keyword’ü bir üstündeki döngüyü durdurmaya yarar.

While Döngüsünde Break
count = 0
while True:
    count += 1
    print(count)
    if count == 10:
        break

Yukarıdaki örneğimizde count değişkeninin değeri 10’a ulaştığında if koşullu durumu çalışacaktır buna bağlı olarak break keywordüde çalışacağından bir üstündeki while döngüsü kapanacak, çıkılacaktır.

For Döngüsünde Break
for i in range(100):
    print(i)
    if i == 10:
        break

Yine aynı şekilde yukarıdaki gibi sonuç verecektir.

peki iki tane döngü kullansak

count = 0
while True:
    count += 1
    print("count", count)
    for i in range(count):
        print("i", i)
        if i == 10:
            break

Bu döngüdeki break for döngüsünü şart sağladığında durdursa bile en üstteki while döngüsünü durduramayacağından her zaman çalışacaktır.

Continue

Continue kelime anlamı gibi devam et özelliğini taşır python’da bunu da örnek ile anlatalım.

for i in range(20):
    if i == 10:
        continue
    print("i 10 ilen bu yazı ekrana gelmez", i)

Yukarıdaki örnekte eğer i değeri 10 olursa devam et dedik yani bir satır aşağıya bakma iteratorumüzdeki bir sonraki next değerini çalıştır, demiş olduk.

Else

For döngümüzün içinde bir if koşul durumu kullandığımızı düşünün fakat biz şöyle bir iş yapmak istiyoruz eğer döngü boyunca bu şart sağlanmaz ise döngü sonunda şunu çalıştır, işte burada yine else yetişiyor yardıma.

for i in range(20):
    if i == 21: #döngü boyunca bu şart sağlanmaz ise
        continue
else:
    print("Bu satırı çalıştır")
Pass

Pass keyword’üne daha önce bakmıştık zaten hiç bir şey yapma ama bu satırda boş kalmasın çünkü hata verir dediğiniz anda yardımınıza koşar.

Örnekler

Döngülerde

>>> while True:
...     pass  # Busy-wait for keyboard interrupt (Ctrl+C)
...

Sınıf tanımlarken

>>> class MyEmptyClass:
...     pass
...

Fonksiyon tanımlarken

>>> def initlog(*args):
...     pass   # Remember to implement this!
...

Last update: June 15, 2022
Created: June 15, 2022