Odak modu
Non-Scalar Veri Tiplerinde for
for döngüsünü işlerken for <değişken> in <obje> yapısında, her iterasyonda değişkenin tek tek objenin elemanlarına eşit olduğunu konuşmuştuk.list, tuple, dictionary non-scalar veri tiplerini gördük ve bunların hepsinin içsel bir yapısı var, şimdi bunların elemanlarında for kullanarak iterasyon yapmaya bakalım.notlar = [90,72,81,77]
for e in notlar:
print(e)
90 72 81 77
t = 0
for e in notlar:
t += e
ortalama = t / len(notlar)
print(ortalama)
80.0
e 'nin özel bir anlamı yok, sadece döngünün içinde onu kullanırken o adla referans veriyorum, adı penguen de olabilirdi.t = 0
for penguen in notlar:
t += penguen
ortalama = t / len(notlar)
print("Ortalama:",ortalama)
Ortalama: 80.0
for e in notlar diyince ilk iterasyonda enin değeri 90, ikincisinde 72... olarak devam etti.range() ile indexlerde iterasyon yapıp indexing ile değerlerine de ulaşabilirdim. (Range belirli bir listenin indexlerinde iterasyon yapmamı sağlamıyor, range(len(notlar)) diyince bize 0,1,2.. len(notlar)-1 sayılarını verecek, bunlar da listenin indexleriyle örtüşüyor, yoksa range() index verir diye bir şey yok.)for i in range(4):
print("Iteration: ", i)
Iteration: 0
Iteration: 1
Iteration: 2
Iteration: 3
t = 0
for i in range(len(notlar)):
t += notlar[i]
ortalama = t / len(notlar)
print("Ortalama:",ortalama)
Ortalama: 80.0
notlar
[90, 72, 81, 77]
for e in notlar:
print(e)
90 72 81 77
e sadece notların içindeki değerler,e 'yi değiştirmek listenin elemanlarını değiştirmez!for e in notlar:
print(e)
e = e + 10
print(e)
print(notlar)
print("--------------")
print(notlar)
90
100
[90, 72, 81, 77]
--------------
72
82
[90, 72, 81, 77]
--------------
81
91
[90, 72, 81, 77]
--------------
77
87
[90, 72, 81, 77]
--------------
[90, 72, 81, 77]
for i in range(len(notlar)):
notlar[i] += 5
notlar
[95, 77, 86, 82]
continue mantığının alıştırmasını yapmış olalım. Diyelim ki öğretmen 2. öğrencinin kağıdını doğru okumuş, 2. öğrenci (index 1'deki) hariç hepsinin değerini 5 arttıracak:notlar = [90,72,81,77]
for i in range(len(notlar)):
if i == 1:
continue
notlar[i] += 5
print(notlar)
[95, 72, 86, 82]
break egzersizi yapalım.break ile sağlayacağım.x = int(input("Hangi sayıyı kontrol edeyim?:"))
l = [2,3,40,100,10,1]
for e in l:
print(e) # iterasyon break ile çıkmış mı görelim mi diye
if e == x:
print("Buldum!!")
break
Hangi sayıyı kontrol edeyim?:100
2
3
40
100
Buldum!!
t = (1,2,3,4)
for e in t:
print(e)
1 2 3 4
toplam = 0
for e in t:
toplam += e
print(toplam)
10
for i in range(len(t)):
print(t[i])
1 2 3 4
for i in range(len(t)):
t[i] += 2
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-37-51c8ededb856> in <module>
1 for i in range(len(t)):
----> 2 t[i] += 2
TypeError: 'tuple' object does not support item assignment
key 'lerde iterasyon yapıyor. Zaten index mantığı olmadığı için range() ile yapmak çoğu zaman karşımıza çıkmaz.d = {"student_1": [90,89], "student_2": [80,83], "student_3": [72,71]}
for k in d:
print(k)
student_1
student_2
student_3
for k in d:
v = d[k]
print(v)
[90, 89]
[80, 83]
[72, 71]
for <değişken> in <obje> yapısında <değişken> int vs gibi şeyler değil liste gibi yapılar da olabilir iterasyon içerisinde, burada da öyle oldu.d = {"student_1": 90, "student_2": 80, "student_3": 72}
for v in d.values():
print(v)
90 80 72
d = {"student_1": [90,89], "student_2": [80,83], "student_3": [72,71]}
for v in d.values():
print(v)
[90, 89]
[80, 83]
[72, 71]
v, her iterasyonda int .d = {"student_1": 90, "student_2": 80, "student_3": 72}
for k in d:
value = d[k]
if value > 85:
print(k)
student_1
key hem de value'larda iterasyon yapmak için:for k,v in d.items():
print("key değeri:", k, "value değeri:", v)
key değeri: student_1 value değeri: 90
key değeri: student_2 value değeri: 80
key değeri: student_3 value değeri: 72
Yorum yapabilmek için derse kayıt olmalısın!