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.
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:
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.
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:
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
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
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.
İ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
`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.
İpucu göster
enumerate(words) her yinelemede (indeks, değer) döndürür.
3 denemeden sonra çözüm mevcut
Ek zorluk
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.
İ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