Python Döngüleri: For ve While Kullanımı Konu Anlatımı
Python döngüleri, belirli bir kod bloğunun belirli bir koşul altında veya bir veri grubu üzerinde tekrar tekrar çalıştırılmasını sağlayan programlama yapılarıdır. Yazılım geliştirmede döngüler, tekrarlayan görevleri otomatize ederek kodun daha verimli, okunabilir ve yönetilebilir olmasını sağladığı için programlamanın en temel yapı taşlarından biri olarak kabul edilir. Bir veri listesindeki binlerce öğeyi tek tek işlemekten, bir oyunun sürekli çalışır durumda kalmasını sağlamaya kadar her alanda döngülere ihtiyaç duyulur.
- Python’da For döngüsünün mantığını ve koleksiyonlar üzerinde nasıl gezineceğinizi öğreneceksiniz.
- While döngüsü kullanarak koşula bağlı tekrarlayan işlemler yapmayı kavrayacaksınız.
- Döngü kontrol ifadeleri olan break, continue ve pass komutlarının işlevlerini öğreneceksiniz.
- Range() fonksiyonu ile sayı dizileri oluşturmayı ve döngülerle entegre etmeyi deneyimleyeceksiniz.
- Sonsuz döngülerin nedenlerini ve bunlardan nasıl kaçınacağınızı keşfedeceksiniz.
- For Döngüsü: Genellikle eleman sayısı belli olan koleksiyonlarda (liste, demet, sözlük) kullanılır.
- While Döngüsü: Bir koşul doğru (True) olduğu sürece çalışmaya devam eden döngü türüdür.
- İterasyon: Bir döngünün her bir tekrarına verilen teknik isimdir.
- Sonsuz Döngü: Bitiş koşulu asla gerçekleşmeyen ve programı kilitleyen döngülerdir.
Python’da Döngü Kavramı ve Algoritmik Önemi
Programlama dünyasında karşılaşılan problemlerin büyük bir kısmı, verilerin işlenmesi veya belirli bir işlemin defalarca tekrarlanması üzerinedir. Örneğin, bir sınıftaki 30 öğrencinin not ortalamasını hesaplamak istediğinizde, her öğrenci için aynı toplama ve bölme işlemini manuel olarak yazmak yerine bir döngü kurarsınız. Döngüler, bilgisayarların en güçlü yanını, yani sıkılmadan ve hata yapmadan milyonlarca işlemi saniyeler içinde yapabilme yeteneğini kullanmamıza olanak tanır.
Python dilinde döngüler, diğer dillerden farklı olarak daha okunabilir ve insan diline yakın bir sözdizimine (syntax) sahiptir. Bu durum, özellikle yeni başlayanlar için mantığı kavramayı kolaylaştırır. Döngülerin temel amacı DRY (Don’t Repeat Yourself – Kendini Tekrar Etme) prensibine sadık kalarak temiz kod yazmaktır.
For Döngüsü: Koleksiyonlar Üzerinde Gezinme
Python’da for döngüsü, bir dizi (list, tuple, string) veya diğer yinelenebilir nesnelerin öğeleri üzerinde sırayla işlem yapmak için kullanılır. Diğer dillerdeki for döngüsünden farklı olarak Python, doğrudan nesnenin elemanlarına odaklanır. Eğer bir listeniz varsa, for döngüsü listenin başından başlar ve son elemana kadar her bir öğeyi sırayla döngü değişkenine atar.
meyveler = ["Elma", "Armut", "Muz", "Çilek"]
for meyve in meyveler:
print(f"Şu anki meyve: {meyve}")
Yukarıdaki kod örneğinde, meyve adı verilen geçici bir değişken oluşturulur. Döngü her döndüğünde, meyveler listesindeki bir sonraki eleman bu değişkene atanır ve ekrana yazdırılır. Liste bittiğinde döngü otomatik olarak sonlanır. Bu yöntem, programcıyı listenin uzunluğunu hesaplama veya bir sayaç tutma zahmetinden kurtarır.
Range() Fonksiyonu ile For Kullanımı
Belirli bir sayıda işlem yapmak istediğimizde veya belirli bir sayı aralığında dönmek istediğimizde range() fonksiyonu devreye girer. Bu fonksiyon, bize sayısal bir dizi üretir. Kullanımı oldukça esnektir ve üç farklı parametre alabilir: başlangıç, bitiş (dahil değil) ve artış miktarı.
1’den 10’a kadar (10 hariç) olan çift sayıları ekrana yazdırmak için şu kodu kullanabiliriz:
for sayi in range(2, 10, 2):
print(sayi)
Burada range(2, 10, 2) ifadesi şu anlama gelir: 2’den başla, 10’a kadar git (ama 10’u alma) ve her adımda 2 ekle. Eğer sadece tek bir sayı verirseniz (örneğin range(5)), bu 0’dan başlayıp 5’e kadar (5 hariç) olan sayıları temsil eder.
While Döngüsü: Koşul Odaklı Tekrarlar
While döngüsü, bir mantıksal koşul True (doğru) olduğu sürece çalışmaya devam eder. Eğer işlemin kaç kez tekrarlanacağını önceden bilmiyorsanız, ancak bir şartın gerçekleşmesine bağlıysanız while döngüsü en doğru seçimdir. Örneğin, kullanıcı doğru şifreyi girene kadar şifre sormaya devam etmek klasik bir while döngüsü senaryosudur.
sayac = 1
while sayac <= 5:
print(f"Sayacın değeri: {sayac}")
sayac += 1 # Sayacı artırmayı unutmayın!
While döngüsünde en kritik nokta, koşulun bir noktada False (yanlış) olmasını sağlamaktır. Eğer yukarıdaki örnekte sayac += 1 satırını yazmasaydık, sayac her zaman 1 kalacaktı ve 1 her zaman 5’ten küçük olduğu için döngü asla durmayacaktı.
Sonsuz Döngüden Kaçınma ve Hata Ayıklama
Sonsuz döngüler genellikle bir değişkenin güncellenmesinin unutulması veya koşulun mantıksal olarak asla yanlış olmaması nedeniyle oluşur. Eğer programınız çalışırken hiçbir çıktı vermeden takılı kalıyorsa, büyük ihtimalle bir sonsuz döngüye girmiştir. Geliştirme ortamlarında bu durumu durdurmak için genellikle Ctrl + C tuş kombinasyonu kullanılır.
Döngü Kontrol İfadeleri: Break, Continue ve Pass
Bazen döngünün normal akışını bozmamız gerekebilir. Belirli bir durumda döngüden tamamen çıkmak veya bir adımı atlayıp sonrakine geçmek isteyebiliriz. Python bunun için üç anahtar kelime sunar:
- Break: Döngüyü o anda tamamen sonlandırır. Döngünün geri kalanına bakılmaz.
- Continue: Döngünün o anki turunu sonlandırır ve bir sonraki tura (iterasyona) geçer.
- Pass: Henüz içi doldurulmamış kod blokları için yer tutucu görevi görür. Hiçbir işlem yapmaz.
for i in range(1, 10):
if i == 5:
continue # 5 sayısını atla
if i == 8:
break # 8'e gelince döngüden çık
print(i)
Bu kodun çıktısı 1, 2, 3, 4, 6, 7 olacaktır. 5 atlanmış, 8 ve sonrası ise hiç yazdırılmamıştır.
| Özellik | For Döngüsü | While Döngüsü |
|---|---|---|
| Kullanım Amacı | Eleman dizileri üzerinde gezinmek | Koşul sağlandığı sürece dönmek |
| Tekrar Sayısı | Genellikle önceden belirlidir | Koşula bağlı olarak belirsizdir |
| Karmaşıklık | Daha basit ve okunabilir | Mantıksal hatalara daha açıktır |
İç İçe Döngüler (Nested Loops)
Bazı durumlarda bir döngünün içinde başka bir döngü çalıştırmanız gerekebilir. Bu durum iç içe döngüler olarak adlandırılır. Örneğin, iki boyutlu bir matrisin elemanlarına erişmek veya bir çarpım tablosu oluşturmak için iç içe döngüler kullanılır. İçteki döngü, dıştaki döngünün her bir adımı için tamamen baştan sona çalışır.
for i in range(1, 4):
for j in range(1, 4):
print(f"({i}, {j})", end=" ")
print() # Bir alt satıra geçmek için
Bu yapı, programlama mantığını geliştirmek için harikadır ancak dikkatli kullanılmalıdır. İç içe döngülerin sayısı arttıkça (örneğin 3 veya 4 katman), programın çalışma süresi katlanarak artar. Bu durum büyük veri setlerinde performans sorunlarına yol açabilir.
Gerçek Dünya Senaryosu: Veri Filtreleme ve Arama
Döngülerin gerçek dünyadaki kullanımını anlamak için bir e-ticaret sitesindeki ürün listeleme mantığını düşünebiliriz. Elimizde binlerce ürünün olduğu bir liste olsun ve biz sadece fiyatı 100 TL’den düşük olanları listelemek isteyelim. İşte burada döngüler ve koşullu ifadeler birlikte çalışır.
urunler = [{"ad": "Defter", "fiyat": 50}, {"ad": "Kalem", "fiyat": 20}, {"ad": "Çanta", "fiyat": 250}]
print("Ucuz Ürünler:")
for urun in urunler:
if urun["fiyat"] < 100:
print(f"{urun['ad']} - {urun['fiyat']} TL")
Bu yaklaşım, modern web sitelerinin ve mobil uygulamaların arka planında sürekli olarak çalışmaktadır. Veritabanından gelen veriler döngüler aracılığıyla ekrana yansıtılır.
Öğrendiklerinizi Pekiştirin
Python döngülerini tam olarak kavramak için sadece okumak yeterli değildir; kendi kodlarınızı yazmanız ve hatalarla karşılaşmanız gerekir. Aşağıdaki soruları çözerek kendinizi test edebilirsiniz. Unutmayın, her hata yeni bir öğrenme fırsatıdır.
- Kullanıcıdan bir sayı alan ve 1’den o sayıya kadar olan tüm sayıların toplamını hesaplayan bir program yazınız.
- While döngüsü kullanarak kullanıcıya “Çıkmak için ‘q’ tuşuna basın” uyarısı veren bir sistem tasarlayınız.
- Bir listenin içindeki sadece çift sayıları yeni bir listeye kopyalayan bir for döngüsü oluşturunuz.
- Break komutu kullanılmadan bir sonsuz döngüyü nasıl durdurabilirsiniz?
- Çarpım tablosunu 1’den 10’lara kadar ekrana basan iç içe bir döngü yapısı kurunuz.
- For döngüleri, belirli bir koleksiyonun (liste, string vb.) her elemanı için işlem yapar.
- While döngüleri, bir mantıksal koşul doğru olduğu sürece çalışır; koşul bozulunca durur.
- range() fonksiyonu, döngülerde sayı dizileri oluşturmak için kullanılan en temel araçtır.
- Break döngüden tamamen çıkar, continue ise sadece o anki adımı atlar.
- Sonsuz döngü hatasından kaçınmak için döngü değişkeninin güncellendiğinden emin olunmalıdır.