Bir cümlelik özet
Döngü, aynı işi tekrar tekrar yazmak yerine bilgisayara "şu kadar kez" veya "şu koşul doğru olduğu sürece" yap dememizi sağlayan yapıdır; Python'da bunun için for ve while kullanırız.
Neden önemli?
Bir programda 1'den 100'e kadar olan sayıları yazdırmak istediğini düşün. Her satırı tek tek print(1), print(2), print(3) diye yazmak hem çok uzun sürer hem de kolayca hata yaparsın. Döngüler tam da bu noktada işe yarar.
Scratch modülünde "10 kez tekrarla" bloğunu kullanmıştık. for ve while, aynı fikrin Python'daki karşılığıdır. Bir robotun sensörünü sürekli okumak, bir oyunda her kareyi çizmek ya da bir listedeki her ismi ekrana yazmak gibi işlerin hepsi döngüyle yapılır. Tekrar, programlamanın üç temel yapı taşından biriydi; bu derste onu gerçek koda çeviriyoruz.
for döngüsü: belli sayıda tekrar
for döngüsü, önceden bilinen bir sayıda ya da hazır bir dizinin üzerinde tekrar yapmak için kullanılır. Türkçesiyle: "her eleman için şunu yap."
range ile sayarak dönmek
range(...) fonksiyonu bize bir sayı dizisi üretir. range(5) ifadesi 0, 1, 2, 3, 4 sayılarını verir; yani 0'dan başlar ve 5'e ulaşmadan durur.
for i in range(5):
print("Merhaba", i)
Bu kodun çıktısı:
Merhaba 0
Merhaba 1
Merhaba 2
Merhaba 3
Merhaba 4
Burada i bir sayaçtır ve her turda bir sonraki değeri alır. Dikkat: print satırı for satırından 4 boşluk içeride yazılmıştır. Bu girinti (indentation), o satırın döngünün içinde olduğunu Python'a söyler. Girintiyi silersen kod çalışmaz.
range üç türlü kullanılabilir:
range(5)→ 0, 1, 2, 3, 4range(1, 6)→ 1, 2, 3, 4, 5 (baştan ve sondan)range(0, 10, 2)→ 0, 2, 4, 6, 8 (ikişer ikişer)
Örnek: 1'den 10'a kadar toplam
Sayaç değerlerini bir değişkende biriktirebiliriz.
toplam = 0
for i in range(1, 11):
toplam = toplam + i
print("Toplam:", toplam)
range(1, 11) bize 1'den 10'a kadar sayıları verir. Her turda i değerini toplama ekleriz. Program Toplam: 55 yazdırır.
Bir listenin üzerinde dönmek
for, sadece sayılarla değil, bir listenin her elemanıyla da çalışır. Liste konusunu sonraki derste ayrıntılı göreceğiz; şimdilik köşeli parantez içinde sıralanmış öğeler olarak düşün.
isimler = ["Ada", "Deniz", "Kaan"]
for isim in isimler:
print("Sıradaki:", isim)
Bu kod listedeki her ismi tek tek ekrana yazar:
Sıradaki: Ada
Sıradaki: Deniz
Sıradaki: Kaan
Burada döngü değişkeni bir sayı değil, doğrudan listedeki öğedir. Kaç eleman varsa döngü o kadar kez döner; sayıyı bizim bilmemiz gerekmez.
while döngüsü: koşul doğru olduğu sürece
while döngüsü, bir koşul doğru kaldığı sürece tekrar eder. Kaç kez döneceğini önceden bilmediğimiz durumlarda kullanışlıdır. Koşullar dersinden hatırladığın if gibi bir koşul yazarız; fark, koşul doğru olduğu sürece işin tekrarlanmasıdır.
sayi = 1
while sayi <= 3:
print("Sayı:", sayi)
sayi = sayi + 1
Çıktısı:
Sayı: 1
Sayı: 2
Sayı: 3
Burada üç adım önemlidir: bir başlangıç değeri (sayi = 1), bir koşul (sayi <= 3) ve her turda değeri değiştiren bir satır (sayi = sayi + 1). Bu son satır olmazsa koşul hiç bozulmaz.
Örnek: 1'den 10'a kadar toplam (while ile)
Aynı toplama işlemini while ile de yapabiliriz. Böylece iki döngünün mantığını karşılaştırabilirsin.
toplam = 0
sayi = 1
while sayi <= 10:
toplam = toplam + sayi
sayi = sayi + 1
print("Toplam:", toplam)
Sonuç yine Toplam: 55. Aynı problemi hem for hem while ile çözdük. Sayı belliyse for genelde daha kısadır; koşula bağlı durup durmayacağını bilmiyorsan while daha uygundur.
break, continue ve sonsuz döngü
break: döngüyü hemen bitir
break, döngünün ortasında "yeter, çık" demek için kullanılır.
for i in range(1, 100):
if i == 5:
break
print(i)
Bu kod 1, 2, 3, 4 yazdırır ve i 5 olunca döngüyü tamamen durdurur.
continue: bu turu atla
continue, o turun geri kalanını atlayıp bir sonraki tura geçer.
for i in range(1, 6):
if i == 3:
continue
print(i)
Çıktı 1, 2, 4, 5 olur; 3 atlanır ama döngü devam eder.
Sonsuz döngü riski
Bir while döngüsünün koşulu hiçbir zaman bozulmazsa program hiç durmaz. Buna sonsuz döngü denir.
sayi = 1
while sayi <= 5:
print(sayi)
# sayi = sayi + 1 satırı unutulursa döngü hiç bitmez
Yukarıdaki kodda sayi hep 1 kaldığı için koşul her zaman doğru olur ve ekrana durmadan 1 yazılır. Programı durdurmak için terminalde Ctrl + C tuşlarına basabilirsin. while yazarken her zaman "bu koşul nasıl bozulacak?" diye sor.
Mini uygulama
Aşağıdaki üç görevi kendi bilgisayarında dene:
forverangekullanarak 1'den 20'ye kadar olan çift sayıları yazdır. (İpucu:range(2, 21, 2).)- Bir listeyi kendin oluştur:
hayvanlar = ["kedi", "köpek", "kuş"]yaz veforile her hayvanı ekrana bastır. whilekullanarak 10'dan geriye 1'e kadar say. Her turda değeri 1 azalt.
İkinci görevin bir çözümü şöyle olabilir:
hayvanlar = ["kedi", "köpek", "kuş"]
for hayvan in hayvanlar:
print(hayvan)
Kendi çözümünü çalıştırıp çıktının beklediğin gibi olup olmadığını kontrol et.
Uygulama laboratuvarı: For ve While Döngüleri
For ve While Döngüleri konusunu kalıcı hâle getirmenin en iyi yolu, kavramı küçük ve ölçülebilir bir göreve dönüştürmektir. Bu çalışmada for döngüsü: belli sayıda tekrar ile Örnek: 1'den 10'a kadar toplam arasındaki ilişkiyi kullanarak çalışan kısa bir Python 3 programı, örnek girdiler ve beklenen çıktılar hazırlayacaksın. Amaç yalnız sonucun çalışması değil; hangi kararı neden verdiğini, neyi test ettiğini ve hangi durumda tasarımı değiştireceğini açıklayabilmektir.
Görev senaryosu
Şu senaryoyu ele al: günlük ders programını kontrol eden komut satırı aracı. Dersin ana hedefi “for ve while döngüleriyle tekrarı; range, break ve continue kullanmayı öğren” olduğuna göre önce problemi tek cümleyle tanımla. Ardından sistemin alacağı girdiyi, uygulayacağı işlemi ve üreteceği çıktıyı ayrı ayrı yaz. Bilmediğin bir ayrıntı varsa onu varsayım olarak işaretle; varsayımı gerçek bilgi gibi kullanma.
- Planla: Başlangıç durumunu, beklenen sonucu ve kullanacağın kavramları yaz.
- En küçük sürümü kur: Yalnız temel davranışı çalıştır; süsleme ve ek özellikleri sonraya bırak.
- Üç test hazırla: Normal bir durum, sınırda bir durum ve hatalı ya da beklenmeyen bir durum seç.
- Sonucu kaydet: Beklenen ile gerçekleşeni yan yana yaz; fark varsa olası nedeni belirt.
- Tek değişiklik yap: Aynı anda birçok şeyi değiştirmek yerine bir kararı düzeltip testi yeniden çalıştır.
Başarı ölçütleri
- Kod Python 3 sözdizimiyle çalışıyor mu?
- Değişken ve fonksiyon adları amacı açıklıyor mu?
- Boş, yanlış türde ve sınırdaki girdiler denendi mi?
- Hata mesajı kullanıcıya neyi düzeltmesi gerektiğini söylüyor mu?
- Aynı kod gereksiz tekrar olmadan yeniden kullanılabiliyor mu?
“For ve While Döngüleri” çalışmasını bitirdiğinde ürünü bir arkadaşına yalnız bölüm başlıklarıyla anlat. Arkadaşın günlük ders programını kontrol eden komut satırı aracı senaryosundaki adımları ve karar nedenlerini takip edebiliyorsa anlatım yeterince açıktır. Anlaşılmayan noktayı daha fazla terim ekleyerek değil, for döngüsü: belli sayıda tekrar ve Örnek: 1'den 10'a kadar toplam ilişkisini daha küçük adımlara bölerek düzelt.
Sık yapılan hatalar
Girintiyi unutmak
Döngünün içindeki satırlar 4 boşluk içeride olmalı. Girinti yoksa Python IndentationError verir.
range'in son sayıyı almadığını unutmak
range(1, 10) 10'u içermez, 9'da durur. 1'den 10'a kadar için range(1, 11) yazmalısın.
while'da sayacı artırmayı unutmak
sayi = sayi + 1 gibi bir satır olmazsa koşul hiç değişmez ve sonsuz döngü oluşur.
for ve while'ı karıştırmak
Kaç kez döneceğin belliyse for daha nettir. Bir koşula bağlı olarak durması gerekiyorsa while daha uygundur.
Güvenlik notu
Bu ders tamamen kendi bilgisayarında çalışan Python koduyla ilgilidir. Yalnızca kendi yazdığın veya güvendiğin kodları çalıştır; internetten kopyaladığın bir kodu anlamadan çalıştırma. Bir program yanıt vermez hâle gelirse (örneğin sonsuz döngüye girerse) Ctrl + C ile güvenle durdurabilirsin. Kişisel bilgilerini kodun içine yazma.
Ders özeti
fordöngüsü, belli sayıda tekrar veya bir dizinin/listenin elemanları üzerinde dönmek için kullanılır.range(başlangıç, bitiş, adım)bir sayı dizisi üretir ve bitiş değerine ulaşmadan durur.whiledöngüsü, bir koşul doğru olduğu sürece tekrar eder ve koşulu değiştiren bir satıra ihtiyaç duyar.breakdöngüyü tamamen bitirir;continueyalnız o turu atlar.- Koşulu hiç bozulmayan bir
whilesonsuz döngü oluşturur; bunuCtrl + Cile durdurabilirsin.
Kontrol soruları
range(3)hangi sayıları üretir?for i in range(1, 6):döngüsü kaç kez döner?- Bir
whiledöngüsünün sonsuza girmemesi için kodda ne bulunmalıdır? breakilecontinuearasındaki fark nedir?["mavi", "yeşil"]listesiniforile yazdıran kısa bir kod yaz.
Cevaplar
- 0, 1 ve 2 sayılarını üretir.
rangesıfırdan başlar ve 3'e ulaşmadan durur. - 5 kez döner:
isırayla 1, 2, 3, 4, 5 değerlerini alır (range(1, 6)6'yı içermez). - Koşulu er geç bozacak bir satır bulunmalıdır; örneğin her turda sayacı değiştiren
sayi = sayi + 1. breakdöngünün tamamını hemen durdurur;continueyalnızca o anki turun geri kalanını atlayıp bir sonraki tura geçer.- Örnek çözüm:
renkler = ["mavi", "yeşil"]
for renk in renkler:
print(renk)
Kaynak ve doğrulama notu
“For ve While Döngüleri” dersi için doğrulama odağı for döngüsü: belli sayıda tekrar ile Örnek: 1'den 10'a kadar toplam arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Kod örnekleri Python 3 sözdizimi esas alınarak hazırlanmıştır. Çalıştırma ortamına göre küçük farklar görülebileceği için örnekler önce güvenli bir çevrim içi editörde veya yerel geliştirme ortamında denenmelidir.
Sonraki ders
Listeler ve Sözlükler: Verileri sıralı listelerde ve anahtar-değer çiftlerinde saklamayı ve döngülerle bu verileri işlemeyi öğreneceğiz.