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.