Menu

Python while Döngüleri: Söz Dizimi, while True ve Sonsuz Döngüleri Önlemek

for döngüsü yerine ne zaman while seçmelisin, sonsuz döngülerden nasıl kaçınılır ve gerçek kodda en çok karşına çıkan kalıplar.

Bir Koşulu İzleyen Döngü

for bilinen bir dizi üzerinde iterasyon yaparken, while bir koşul doğru olduğu sürece döngüye devam eder. Kaç iterasyon gerekeceğini önceden bilmediğinde ona başvurursun — bir şey çalışana kadar tekrar denemek, kullanıcı dur diyene kadar girdi okumak, bir servis yanıt verene kadar yoklamak.

Biçimi basittir:

main.py
Output
Click Run to see the output here.

Bu 0'dan 4'e kadar yazdırır. Python her iterasyonun başında koşulu kontrol eder. Koşul doğruysa gövde çalışır. Sonra tekrar kontrol eder. Koşul yanlış olduğunda döngü biter.

count += 1 satırının önemli olduğuna dikkat et. O olmasa koşul sonsuza dek doğru kalır — sonsuz bir döngü. while ile asıl tuzak budur ve kullanabildiğin yerde for'u tercih etmenin başlıca sebebi de budur.

while Hangi Durumda Doğru Araçtır

Birkaç klasik kullanım durumu:

Başarana kadar tekrar dene.

main.py
Output
Click Run to see the output here.

Kullanıcı çıkana kadar girdi oku.

main.py
Output
Click Run to see the output here.

Bir kuyruğu işle.

main.py
Output
Click Run to see the output here.

Ortak nokta: elemanlar üzerinde iterasyon yapmak yerine bir durum değişikliğini izliyorsun.

while True Sorun Değil

Bu kalıbı sıkça göreceksin:

main.py
Output
Click Run to see the output here.

"Gerçek" çıkış koşulu, başta test edebileceğin temiz bir şey değil de döngü gövdesinin içinde olduğunda bu deyimsel (idiomatic) Python'dır. Bir yerde güncellediğin, başka bir yerde kontrol ettiğin should_continue bayrağı uydurmaktan daha kolay okunur.

Tek kural: kodun eninde sonunda ulaşacağı bir break (veya return ya da fırlatılan bir istisna) olduğundan emin ol. Çıkış yolu olmayan koşulsuz bir while True:, bir programı kilitlemenin klasik yoludur.

Sonsuz Döngüden Kaçınmak

Sonsuz döngüler, koşul sonsuza dek doğru kaldığında oluşur. Her zamanki şüpheliler:

  • Değişkeni güncellemeyi unuttun. while count < 5: gövdesinin içinde count'u değiştiren bir şey olmalı.
  • Yanlış değişkeni güncelledin. while i < 10: ve içeride j += 1 — birkaç değişkenden fazlası varsa kaçırması kolay.
  • Kayan noktalı sayı karşılaştırması. while x != 1.0:, eğer x 1.0'a yalnızca yaklaşıyorsa sonsuza dek dönebilir. Bunun yerine <= veya abs(x - 1.0) < tolerance kullan.

Terminalde sonsuz bir döngüye takılırsan Ctrl+C'ye bas. Bu bir kesme sinyali gönderir ve Python ne yapıyorsa bırakır.

break, continue ve else

while, for ile aynı üç "akış" aracını destekler:

  • break döngüden hemen çıkar.
  • continue bir sonraki iterasyona atlar (koşul yeniden kontrol edilir).
  • else döngü bir break olmadan bittiğinde çalışır.
main.py
Output
Click Run to see the output here.

Bu, ilkel bir asallık kontrolüdür. İçteki break tetiklenirse sayı bileşiktir. Döngü doğal yollarla (koşul false olarak) çıkarsa else çalışır ve sayıyı asal ilan eder.

while mi for mu: Hangisini Seçmeli?

Hızlı bir zihinsel test:

  • Adım adım dolaşacağın bir koleksiyonun var mı?for.
  • Sabit sayıda iterasyon yapman mı gerekiyor?for i in range(n):.
  • Bir koşul değişene kadar mı dönüyorsun?while.

Erken dönem Python kodunda döngülerin %90'ını for karşılar. while daha çok yoklama, tekrar deneme ya da basit bir REPL oluşturma gibi şeylerde ortaya çıkar. Bir listeyi index ile dolaşmak için while kullanıyorsan, bu for + enumerate'e geçmen gerektiğinin bir işaretidir.

Pratik Bir while Programı

Sayı tahmin oyunu klasik bir örnektir çünkü iterasyon sayısı kullanıcının nasıl oynadığına bağlıdır:

main.py
Output
Click Run to see the output here.

Kaç deneme süreceğini önceden bilemezsin — kullanıcının tahminlerine bağlıdır. while'ın varlık sebebi de tam budur.

İleriye Bakış

Artık Python'un sunduğu iki döngü türünü de gördün. Sırada: range() ayrıntılı olarak — sayma tarzı neredeyse her for döngüsünde karşına çıkar ve koleksiyonlara geçmeden önce küçük nüanslarını anlamaya değer.

Sıkça Sorulan Sorular

for döngüsü yerine ne zaman while kullanmalıyım?

Kaç iterasyon olacağını önceden bilmediğinde while kullan — örneğin bir şey başarılı olana kadar tekrar denemek ya da kullanıcı 'quit' yazana kadar girdi okumak. Bilinen bir koleksiyon üzerinde adım adım ilerliyorsan for kullan.

Python'da sonsuz döngüden nasıl kaçınırım?

Döngünün içinde bir şeyin eninde sonunda koşulu false yaptığından emin ol. Sonsuz döngülerin en yaygın sebebi, koşulun bağlı olduğu değişkeni güncellemeyi unutmaktır. Bir sonsuz döngüye yakalanırsan, durdurmak için terminalde Ctrl+C'ye bas.

while True kötü bir uygulama mı?

Doğası gereği değil. İçinde net bir break olan while True:, "belirli bir çıkış koşuluna ulaşana kadar döngüye devam et" için gayet normal bir kalıptır. İki farklı yerde yönetmen gereken bir boolean bayrak uydurmaktan daha temizdir.

Coddy ile kodlamayı öğren

BAŞLA