İçeriğe geç

Python'da Döngüler

Python’da Tipleri ve Kullanımları

Python programlamada döngüler, bir dizi işlemi tekrar etmek için kullanılır. Python’da en yaygın döngü türleri for döngüsü ve while döngüsüdür. Bu makalede Python’daki döngü yapıları, döngülerde kullanılan önemli komutlar (break, continue gibi) ve yazılım mülakatları ya da LeetCode gibi platformlardaki soru çözümleri için önemli olan konular ele alınacaktır.

1. for Döngüsü

for döngüsü, genellikle iterable (listeler, diziler, stringler gibi) veri yapıları üzerinde gezinmek için kullanılır.

Örnek Kullanım:

Yazılım geliştirme ve LeetCode benzeri sorular içeren algoritma mülakatlarına hazırlanmak için en uygun programlama dili genellikle Python olarak kabul edilir. Bunun birkaç sebebi var. Devam etmeden önce yazılım geliştirme mülakatları ya da competitive programlama için kullanılan en yaygın dillerin özelliklerini sıralayalım.

for eleman in [1, 2, 3, 4]:
print(eleman)

Çıktı:

1
2
3
4

Bu döngü, verilen listedeki her bir elemanı tek tek gezerek yazdırır.

for döngüsünün range() fonksiyonu ile kullanımı:

range() fonksiyonu, belirli bir aralıkta sayılar üretir ve for döngüsü ile birlikte sıkça kullanılır.

Örnek Kullanım:

for i in range(5):
print(i)

Çıktı:

1
2
3
4
5

2. while Döngüsü:

while döngüsü, belirli bir koşul doğru olduğu sürece çalışmaya devam eder. Koşul False olduğunda döngü sona erer.

Örnek Kullanım:

i = 0
while i < 5:
print(i)
i += 1

Çıktı:

0
1
2
3
4

Bu döngü, i değişkeni 5 olana kadar çalışır ve her adımda i bir arttırılır.

3. break ve continue Kullanımı:

break:

Döngüyü tamamen sonlandırır. break ifadesine ulaşıldığında döngü sona erer ve döngünün dışına çıkılır.

Örnek Kullanım:

for i in range(5):
if i == 3:
break
print(i)

Çıktı:

0
1
2

Bu örnekte, i 3 olduğunda döngü break ile sonlanır.

continue:

Döngünün o anki iterasyonunu atlayarak bir sonraki iterasyona (adıma) geçer.

Örnek Kullanım:

for i in range(5):
if i == 3:
continue
print(i)

Çıktı:

0
1
2
4

Bu örnekte, i 3 olduğunda continue ifadesi çalışır ve o iterasyon atlanır.

4. İç İçe Döngüler:

Döngüler, başka bir döngünün içinde kullanılabilir. İç içe döngüler genellikle iki boyutlu veri yapılarıyla (örneğin, matrisler) çalışırken kullanılır.

Örnek Kullanım:

for i in range(3):
for j in range(2):
print(f"i: {i}, j: {j}")

Çıktı:

i: 0, j: 0
i: 0, j: 1
i: 1, j: 0
i: 1, j: 1
i: 2, j: 0
i: 2, j: 1

Bu örnekte, her i değeri için j değeri döngüye girer ve bu şekilde iç içe iki döngü çalıştırılır.

5. İç İçe Döngülerden Çıkış:

İç içe döngülerden çıkmak için break ifadesi tek başına yeterli olmayabilir. Sadece en içteki döngüden çıkış sağlar. İç içe döngülerden tamamen çıkmak için birkaç çözüm yöntemi vardır:

flag Kullanmak:

Bir bayrak (flag) değişkeni kullanılarak iç içe döngülerden çıkılabilir.

Örnek Kullanım:

flag = False
for i in range(3):
for j in range(3):
if i == 1 and j == 1:
flag = True
break
if flag:
break

fonksiyon Kullanmak:

Bir fonksiyon içindeki döngülerden return ile tamamen çıkılabilir.

Örnek Kullanım:

def ic_ice_dongu():
for i in range(3):
for j in range(3):
if i == 1 and j == 1:
return
print(f"i: {i}, j: {j}")
ic_ice_dongu()

Çıktı:

i: 0, j: 0
i: 0, j: 1
i: 0, j: 2
i: 1, j: 0
i: 1, j: 1

6. Döngülerin Sonunda else Kullanımı:

Python’da döngüler, normal bir şekilde sona ererse else bloğu çalıştırılır. Ancak döngü break ifadesi ile sona erdirilirse, else bloğu çalışmaz.

for i in range(5):
if i == 3:
break
print(i)
else:
print("Döngü normal şekilde sona erdi.")

Çıktı:

0
1
2

Bu örnekte break ifadesi kullanıldığı için else bloğu çalışmaz. Ancak break olmadan döngü tamamlanırsa else bloğu devreye girer.

7. LeetCode ve Mülakat Soruları için Öneriler

7.1. LeetCode Sorusu: “Two Sum”

Bu soru, bir dizide iki sayının toplamının belirli bir hedef değeri vereceği iki indeksi bulmayı gerektirir. Döngüler ve koşullu ifadeler sıklıkla kullanılır.

Bu soruyu iç içe döngülerle aşağıdaki şekilde çözebiliriz:

def two_sum(nums, target):
for i in range(len(nums)):
for j in range(i + 1, len(nums)):
if nums[i] + nums[j] == target:
return [i, j]

LeetCode Sorusu: “Valid Parentheses”

Bu soruda parantezlerin doğru bir şekilde eşleşip eşleşmediğini kontrol eden bir çözüm yazmanız istenir.

Bu soruyu iç içe döngülerle aşağıdaki şekilde çözebiliriz:

def is_valid(s):
stack = []
par_map = {')': '(', '}': '{', ']': '['}
for char in s:
if char in par_map:
top_element = stack.pop() if stack else '#'
if par_map[char] != top_element:
return False
else:
stack.append(char)
return not stack

8. Sonsuz Döngüler

Bir döngü sonsuza kadar çalışabilir. Bu genellikle koşulun yanlış yazılması veya bilinçli olarak sonsuz bir döngü oluşturulmak istendiğinde gerçekleşir. Genellikle döngünün bir noktasında return veya break kullanılarak döngüden çıkılır.

while True:
print("Bu döngü sonsuza kadar çalışacak.")
break # Döngüyü sonlandırmak için break kullanılır.

9. Optimizasyon İpuçları

Döngü İçerisinde Gereksiz Hesaplamalardan Kaçının: Döngü içerisinde sabit olan hesaplamaları döngü dışında yaparak performansı artırabilirsiniz.

enumerate() Fonksiyonunu Kullanın: Döngüde hem öğeyi hem de indeksini kullanmak için enumerate() fonksiyonunu kullanabilirsiniz.

liste = ['elma', 'armut', 'kiraz']
for indeks, deger in enumerate(liste):
print(indeks, deger)

** Çıktı: **

0 elma
1 armut
2 kiraz

Sonuç:

Python’daki döngü yapıları ve kontrol ifadeleri, algoritma sorularında ve günlük programlama problemlerinde önemli bir yere sahiptir. Bu makalede ele alınan konular, yazılım mülakatlarına hazırlık ve LeetCode gibi platformlarda sorular çözerken faydalı olacaktır. Döngülerde performans optimizasyonu yapmayı, break ve continue gibi ifadelerle program akışını yönetmeyi öğrenmek, daha etkin ve doğru kod yazmanıza yardımcı olacaktır.