koddla

Yazılımcıları bilgi ile güçlendirir.

Python101 – Döngüler

Bu bölüme yeni bir alıştırma ile başlayalım:

birdenona = range(1, 11)
for say in birdenona:
    print(say)

ve çıktı:

1
2
3
4
5
6
7
8
9
10

Çıktı son derece tanıdık görünse de program kodu farklı. İlk satır range işlevini kullanır. range işlevi iki bağımsız değişken kullanır: range(baslangic, bitis). baslangic üretilecek ilk sayıdır. bitis ise son sayının bir fazlasıdır. Bu programı daha kısa bir şekilde de yazabilirdik:

for say in range(1, 11):
    print(say)

Aralık işlevi (range) bir yineleme döndürür. list işlevi ile sonuçlar da bir listeye dönüştürülebilir. Neler yapabileceğimize aşağıdaki örnekler ile bakalım:

>>> range(1, 10)
range(1, 10)
>>> list(range(1, 10))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(-32, -20))
[-32, -31, -30, -29, -28, -27, -26, -25, -24, -23, -22, -21]
>>> list(range(5,21))
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
>>> list(range(5))
[0, 1, 2, 3, 4]
>>> list(range(21, 5))
[]

Sonraki for count in onetoten: satırı for döngüsünü kullanır. for kontrol yapısı for degisken in list: şeklinde çalışır. Listenin ilk öğesinden başlayarak son öğeye kadar gider. for döngüsü listedeki her öğeyi tararken öğeleri degisken‘e atar. Bu şekilde döngünün her çalışmasında variable değişkeninin kullanılmasına izin verir.

demolist = ['yaşam', 42, 'evren', 6, 've', 7, 'her şey']
for item in demolist:
    print("Şimdiki öğe :",item)

Çıktı:

Şimdiki öğe : yaşam
Şimdiki öğe : 42
Şimdiki öğe : evren
Şimdiki öğe : 6
Şimdiki öğe : ve
Şimdiki öğe : 7
Şimdiki öğe : her şey

Döngünün nasıl çalıştığına ve listedeki her öğeyi değişkene atadığına dikkat edin. Peki, for ne işe yarar? Bir listenin tüm öğelerini gözden geçirir ve bu öğeyle bir şeyler yapar. Örneğin bir listedeki öğeleri birbirine eklemek istersek;

list = [2, 4, 6, 8]
toplam = 0
for num in list:
    toplam = toplam + num

print("Toplam :", toplam)

çıktı:

Toplam : 20

Veya bu programın yaptığı gibi bir listede herhangi bir yineleme olup olmadığını öğrenmek için bir program yazabilirsiniz:

list = [4, 5, 7, 8, 9, 1, 0, 7, 10]
list.sort()
onceki = None
for item in list:
    if onceki == item:
        print(prev, " öğesinin kopyası bulundu")
    onceki = item

Çıktı:

7 öğesinin kopyası bulundu

Peki, nasıl çalışıyor? Aşağıdaki kod anlamanıza yardımcı olacak özel bir hata ayıklama sürümü içeriyor:

l = [4, 5, 7, 8, 9, 1, 0, 7, 10]
print("l = [4, 5, 7, 8, 9, 1, 0, 7, 10]", "\t\tl:", l)
l.sort()
print("l.sort()", "\t\tl:", l)
onceki = l[0]
print("onceki = l[0]", "\t\tonceki:", onceki)
del l[0]
print("del l[0]", "\t\tl:", l)
for item in l:
    if onceki == item:
        print(prev, " öğesinin kopyası bulundu")
    print("if onceki == item:", "\t\tonceki:", onceki, "\titem:", item)
    onceki = item
    print("onceki = item", "\t\tonceki:", onceki, "\titem:", item)

Çıktı:

l = [4, 5, 7, 8, 9, 1, 0, 7, 10]        l: [4, 5, 7, 8, 9, 1, 0, 7, 10]
l.sort()                  l: [0, 1, 4, 5, 7, 7, 8, 9, 10]
onceki = l[0]             onceki : 0
del l[0]                  l: [1, 4, 5, 7, 7, 8, 9, 10]
if onceki  == item:       onceki : 0         item: 1
onceki = item             onceki : 1         item: 1
if onceki == item:        onceki : 1         item: 4
onceki = item             onceki : 4         item: 4
if onceki == item:        onceki : 4         item: 5
onceki = item             onceki : 5         item: 5
if onceki == item:        onceki : 5         item: 7
prev = item               onceki : 7         item: 7
Duplicate of 7 found
if prev == item:          onceki : 7         item: 7
onceki = item             onceki : 7         item: 7
if onceki == item:        onceki : 7         item: 8
onceki = item             onceki : 8         item: 8
if onceki == item:        onceki : 8         item: 9
onceki = item             onceki : 9         item: 9
if onceki == item:        onceki : 9         item: 10
onceki = item             onceki : 10        item: 10

Koda bu kadar çok ifade koymamızın sebebi her satırda neler olduğunu görebilmeniz içindi. (Bu arada, bir programın neden çalışmadığını çözemiyorsanız, neler olup bittiğini anlamak için bir çok yere print ifadesi koymayı deneyin.) Öncelikle program sıkıcı bir listeyle başlıyor. Daha sonra program bu listeyi sıralıyor. Böylece, kopyaları yan yana koyabiliyoruz. Program daha sonra bir değişken (onceki) oluşturur. Daha sonra listenin ilk öğesini siler, böylece ilk öğenin yanlış bir şekilde yinelenen olduğu düşünülmez. Sonra bir döngüye girilir. Listenin her öğesi için kendinden önceki öğeyle aynı olup olmadığı denetlenir. Eğer kopya bulunursa ekrana bastırılır. onceki değişkeninin değeri değiştirilir, böylece döngünün bir sonraki çalıştırılışında geçerli olan öğe haline gelir. (Sekme yazdırmak için nasıl kullanıldığına dikkat edin: \t)

Döngüleri kullanmanın diğer bir yolu, belirli sayıda bir şey yapmaktır. Fibonacci serisinin ilk 9 numarasını yazdırmak gibi

a = 1
b = 1
for c in range(1, 10):
    print(a, end=" ")
    n = a + b
    a = b
    b = n

çıktı:

1 1 2 3 5 8 13 21 34

for döngüleriyle yapılabilecek her şey while döngüleri ile de yapılabilir, ancak for döngülerinin kullanımı listedeki öğeleri gözden geçirmek veya belirli sayıda bir şey yapmak için daha kolaydır.

Bir yanıt yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Back to top