İçeriğe geç
Educora
Başlangıç16 dk5 / 42

Döngüler: for ve while

İşleri tekrarlamayı öğren: for ve range(), while ve döngüyü yöneten break ile continue.

Kendini test et
Bu derste öğreneceklerin
  • for döngüsüyle bir dizinin karakterlerini ve sayı aralıklarını dolaşmak
  • range() fonksiyonunun başlangıç, bitiş ve adım değerlerini kullanmak
  • Koşul doğru olduğu sürece tekrarlanan bir while döngüsü yazmak
  • break ve continue ile döngüyü yönetmek

Ekrana 1'den 100'e kadar sayıları yazdırman gerektiğini düşün. 100 kez print mi yazacaksın? Elbette hayır! Bilgisayarların en büyük gücü, aynı işi yorulmadan tekrarlamaktır. Bunun için döngüler kullanılır: birkaç satırlık kod binlerce kez çalışabilir.

for döngüsü

for döngüsü bir dizinin öğelerini tek tek alır ve her biri için aynı bloğu çalıştırır. Aşağıdaki kodda letter değişkeni sırayla 'B', 'a', 'k' ve 'u' değerlerini alır. Döngünün her tekrarına yineleme (iterasyon) denir.

Python
for letter in 'Baku':
    print(letter)
▸ Beklenen çıktı
B
a
k
u

Sayılar üzerinde döngü kurmak için range() fonksiyonu kullanılır. Bir sayı dizisi oluşturur: range(1, 11) 1'den 10'a kadar sayıları verir; dilimlerde olduğu gibi bitiş değeri dahil değildir. 7'nin çarpım tablosunu yazdıralım:

Python
for i in range(1, 11):
    print(f'7 x {i} = {7 * i}')
▸ Beklenen çıktı
7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35
7 x 6 = 42
7 x 7 = 49
7 x 8 = 56
7 x 9 = 63
7 x 10 = 70
ÇağrıVerdiği sayılarAçıklama
range(5)0, 1, 2, 3, 40'dan başlar, 5 dahil değildir
range(2, 6)2, 3, 4, 5başlangıç ve bitiş
range(0, 10, 3)0, 3, 6, 9üçüncü sayı adımdır
range(5, 0, -1)5, 4, 3, 2, 1negatif adım geriye doğru sayar

Sonucu biriktirmek

Döngülerde çok sık kullanılan bir kalıp: döngüden önce bir “biriktirici” değişken oluştur, sonra her yinelemede ona bir şey ekle. Örneğin 1'den 100'e kadar tüm sayıları toplayalım:

Python
total = 0
for n in range(1, 101):
    total += n
print('Sum:', total)
▸ Beklenen çıktı
Sum: 5050
Python
for i in range(1, 5):
    print('*' * i)
▸ Beklenen çıktı
*
**
***
****
Döngü içinde bir diziyi sayıyla çarpmak basit bir desen çizer. range(1, 5) yerine range(1, 8) yaz.

while döngüsü

for, tekrar sayısı önceden bilindiğinde kullanışlıdır. Peki bilmiyorsak? O zaman while döngüsü yardıma gelir: bloğu koşul doğru olduğu sürece tekrarlar. Murad 100 manatlık bir kulaklık almak için her hafta 15 manat biriktiriyor. Kaç haftaya ihtiyacı var?

Python
price = 100
saved = 0
weeks = 0
while saved < price:
    saved += 15
    weeks += 1
print(f'After {weeks} weeks Murad has {saved} AZN.')
▸ Beklenen çıktı
After 7 weeks Murad has 105 AZN.

break ve continue

break döngüyü hemen tamamen durdurur; aradığını bulduğunda çok işe yarar. Örneğin hem 5'e hem 7'ye bölünen ilk sayıyı arayalım:

Python
for n in range(1, 100):
    if n % 5 == 0 and n % 7 == 0:
        print('Found:', n)
        break
▸ Beklenen çıktı
Found: 35

continue ise döngüyü durdurmaz; yalnızca mevcut yinelemenin geri kalanını atlar ve bir sonrakine geçer. Aşağıdaki kod, boşlukları saymadan metindeki karakterleri sayar:

Python
text = 'Python is fun'
count = 0
for ch in text:
    if ch == ' ':
        continue
    count += 1
print('Letters:', count)
▸ Beklenen çıktı
Letters: 11
Alıştırma

for döngüsü ve range() ile 1'den 5'e kadar sayıların karelerini yazdır; her biri ayrı satırda, 3 x 3 = 9 biçiminde olsun.

Alıştırma · Python
# print the squares of 1..5 like: 3 x 3 = 9
▸ Beklenen çıktı
1 x 1 = 1
2 x 2 = 4
3 x 3 = 9
4 x 4 = 16
5 x 5 = 25
Alıştırma

while döngüsüyle n = 4096 sayısının rakamları toplamını bul ve sonucu Digit sum: sözcüklerinden sonra yazdır. Döngü n sıfır olana kadar sürmeli.

Alıştırma · Python
n = 4096
total = 0
# while n is greater than 0:
#     add the last digit of n to total
#     remove the last digit from n
# print Digit sum: and total
▸ Beklenen çıktı
Digit sum: 19

Önemli noktalar

  • for, bir dizinin her öğesi için bloğu bir kez çalıştırır.
  • range(start, stop, step) sayı üretir; stop dahil değildir.
  • while, koşul doğru olduğu sürece tekrarlar; koşulun bir noktada yanlış olmasına dikkat et.
  • break döngüyü tamamen bitirir, continue ise bir sonraki yinelemeye geçer.
  • Biriktirici değişken döngüden önce oluşturulur ve her yinelemede güncellenir.

Kendini test et

10 soru. Her doğru cevap XP kazandırır.

1 / 10
range(1, 5) hangi sayıları verir?