Ana içeriğe geç
Modül 2 · Ders 1 ders 4Kurstaki 5/36~10 min
Modül dersleri (1/4)

döngüler ve aralık için

Python'daki for döngüsü, öğelerin dizisini yinelemek için kullanılır: bir liste, bir dize, bir aralık, bir dikte… "yinelenebilir" olan herhangi bir şey.

Python
parole = ["ciao", "mondo", "!"]
for p in parole:
    print(p)
# ciao
# mondo
# !

Kalıp her zaman aynıdır: for <variable> in <iterable>: ve ardından her öğe için bir kez yürütülecek girintili blok.

range(...): tam sayı aralıkları oluşturma

range tembel bir tamsayı dizisi üretir. Üç form:

Python
range(5)         # 0, 1, 2, 3, 4
range(2, 6)      # 2, 3, 4, 5
range(0, 10, 2)  # 0, 2, 4, 6, 8     (step)
range(5, 0, -1)  # 5, 4, 3, 2, 1     (negative step)

range sağ tarafta özeldir, tıpkı slice gibi. Tembel bir nesnedir: tüm sayılara hafıza ayırmaz, teker teker üretir.

Python
totale = 0
for i in range(1, 11):
    totale = totale + i
totale  # 55  (1+2+...+10)

Bir dizinle yineleme: enumerate

Öğeye ve dizinine birlikte ihtiyacınız olduğunda enumerate kullanın:

Python
parole = ["ciao", "mondo", "!"]
for i, p in enumerate(parole):
    print(i, p)
# 0 ciao
# 1 mondo
# 2 !

enumerate doğrudan iki kişiye atadığımız (index, value) çiftlerini üretir demet açma aracılığıyla değişkenleri değiştirebilirsiniz (bunu, veri yapıları).

İki diziyi paralel olarak yinelemek: zip

Python
nomi = ["Ada", "Linus", "Grace"]
anni = [36, 54, 79]
for n, a in zip(nomi, anni):
    print(f"{n} ha {a} anni")

zip en kısa sırada durur.

range() ve Python'un tembelliği

Python'da, range() işlevi bellekte gerçek bir liste ayırmaz: istendiği gibi sayıları teker teker veren bir tembel oluşturucu döndürür (örneğin, bir for döngüsünde). Bu, RAM'i şişirmeden milyonlarca tam sayının yinelenmesine olanak tanır. Aralık değerlerini liste halinde incelemek için bunu list(range(5)) ile açıkça yayınlayabilirsiniz.

Kendin dene

Egzersiz#python.m2.l1.e1
Denemeler: 0Yükleniyor…

For loop over range(...) kullanarak 1'den 100'e kadar (dahil) sayıların toplamını hesaplayın, bunu "toplam"a atayın ve değerlendirin.

Düzenleyici yükleniyor…
İpucu göster

range(1, 101), 1, 2, ..., 100 değerini üretir (sağdaki hariç).

3 denemeden sonra çözüm mevcut

Alıştırmayı gözden geçirin

Egzersiz#python.m2.l1.e2
Denemeler: 0Yükleniyor…

`words = ['uno', 'due', 'tre']` listesi göz önüne alındığında, numaralandırmayı kullanarak '0:uno', '1:due', '2:tre' gibi dizelerin bir 'çiftleri' listesi oluşturun. 'Çiftleri' değerlendirin.

Düzenleyici yükleniyor…
İpucu göster

enumerate(words) her yinelemede (indeks, değer) döndürür.

3 denemeden sonra çözüm mevcut

Ek zorluk

Egzersiz#python.m2.l1.e3
Denemeler: 0Yükleniyor…

Calculate the sum of all even numbers from 2 to 20 inclusive using a `for` loop over a `range`. Store the final sum in `even_sum` and evaluate it.

Düzenleyici yükleniyor…
İpucu göster

Yalnızca 2 ile 20 arasındaki çift tam sayılar üzerinde yineleme yapmak için range(2, 21, 2) öğesini kullanın.

3 denemeden sonra çözüm mevcut