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
n = 1
while n < 1000:
n = n * 2
n # 1024Girintili 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:
i = 0
while i < 5:
print(i)
i = i + 1Sonsuz döngü + dahili çıkış koşulu — koşul sağlandığında kullanışlıdır bir şey yaptıktan sonra değerlendirilir:
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:
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
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).
İ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
'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.
İ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
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.
İ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