fordöngüsüyle bir dizinin karakterlerini ve sayı aralıklarını dolaşmakrange()fonksiyonunun başlangıç, bitiş ve adım değerlerini kullanmak- Koşul doğru olduğu sürece tekrarlanan bir
whiledöngüsü yazmak breakvecontinueile 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.
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:
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ılar | Açıklama |
|---|---|---|
range(5) | 0, 1, 2, 3, 4 | 0'dan başlar, 5 dahil değildir |
range(2, 6) | 2, 3, 4, 5 | başlangıç ve bitiş |
range(0, 10, 3) | 0, 3, 6, 9 | üçüncü sayı adımdır |
range(5, 0, -1) | 5, 4, 3, 2, 1 | negatif 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:
total = 0
for n in range(1, 101):
total += n
print('Sum:', total)▸ Beklenen çıktı
Sum: 5050
for i in range(1, 5):
print('*' * i)▸ Beklenen çıktı
* ** *** ****
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?
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:
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:
text = 'Python is fun'
count = 0
for ch in text:
if ch == ' ':
continue
count += 1
print('Letters:', count)▸ Beklenen çıktı
Letters: 11
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.
# 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
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.
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;stopdahil değildir.while, koşul doğru olduğu sürece tekrarlar; koşulun bir noktada yanlış olmasına dikkat et.breakdöngüyü tamamen bitirir,continueise 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.
range(1, 5) hangi sayıları verir?