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

döngüler sırasında

while döngüsü, koşul doğru kaldığı sürece bir bloğu tekrarlar. Kullanım while kaç yinelemeye ihtiyacınız olacağını önceden bilmediğinizde: Tur sayısı döngü içinde değişen bir şeye bağlıdır.

Sözdizimi

Python
n = 1
while n < 1000:
    n = n * 2
n  # 1024

Girintili blok tekrar tekrar yürütülür. Her yinelemeden önce Python koşulu değerlendirir: yanlış olur olmaz döngü sona erer ve yürütme bloktan sonra devam eder.

Ortak desenler

Manuel sayaç — diğer dillerdeki klasik for ile eşdeğerdir:

Python
i = 0
while i < 5:
    print(i)
    i = i + 1

Sonsuz döngü + dahili çıkış koşulu — koşul sağlandığında kullanışlıdır bir şey yaptıktan sonra değerlendirilir:

Python
acc = 0
while True:
    acc = acc + 1
    if acc * acc > 100:
        break
acc  # 11   (11*11 = 121 is the first square > 100)

break en içteki döngüden hemen çıkar (bunu bir sonraki bölümde göreceğiz) ders).

Klasik hata: sonsuz döngü

Koşuldaki değişken döngü içinde değişmezse, program asla sonlanmaz. while ile ilgili bir numaralı hatadır:

Python
n = 0
while n < 10:
    print(n)   # n is never modified → infinite loop!

Alıştırmalarımızda yürütme zaman aşımı vardır, dolayısıyla sonsuz döngü başarısız olur tarayıcıyı dondurmak yerine net bir mesajla. Ama üretimde bir sonsuz döngü ciddi bir hatadır.

Sonsuz döngü riski ve sonlandırma koşulları

Bir while döngüsü, koşulu Doğru olarak değerlendirildiği sürece yürütülür. Durumu etkileyen değişkenleri güncellemeyi unutursanız, döngünüz sonsuz şekilde çalışacak ve çalışma zamanını donduracaktır. Her zaman döngü gövdesinin çıkış koşuluna doğru ilerlemesini sağlayın.

Kendin dene

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

2**n'nin bir milyonu aşmasını sağlayacak en küçük `n >= 1` tamsayısını bulun. Bunu 'sonuç'a atayın ve değerlendirin (20 olmalıdır).

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

2**20 = 1.048.576, 1.000.000'ı aşan ilk sayıdır.

3 denemeden sonra çözüm mevcut

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

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

'n = 1000'den başlayarak, n'yi tam sayı bölümüyle (n // 2) 0 olana kadar yarıya bölün. 'Adımlarda' kaç yineleme gerektiğini sayın. 'Adımları' değerlendirin.

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

1000 → 500 → 250 → 125 → 62 → 31 → 15 → 7 → 3 → 1 → 0: on adım.

3 denemeden sonra çözüm mevcut

Ek zorluk

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

Given the variable `n = 32`, write a `while` loop to count how many times you can divide `n` by 2 (using floor division `//`) before `n` becomes less than or equal to 1. Store the count in `divisions` and evaluate it.

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

The while condition is n > 1. Inside the loop, divide n by 2 and increment divisions by 1.

3 denemeden sonra çözüm mevcut