Python'da Do-While Döngülerini Taklit Etme
Yayınlanan: 2022-08-31Bu öğreticide, Python'da bir do-while döngüsünü nasıl taklit edeceğinizi öğreneceksiniz.
Herhangi bir programlama dilinde döngüler, döngü koşuluna bağlı olarak belirli eylemleri tekrar tekrar gerçekleştirmenize yardımcı olur. Python, while ve for döngüsü yapılarını destekler, ancak do-while döngüsünü yerel olarak desteklemez.
Ancak, Python'da var olan döngüleri ve döngü kontrol ifadelerini kullanarak nasıl çalıştığını anlayarak do-while döngüsünü taklit edebilirsiniz.
Önümüzdeki birkaç dakika içinde bunu nasıl yapacağınızı öğreneceksiniz. Hadi başlayalım!
Do-While Döngüsü Yapısı nedir?

C veya C++ gibi dillerde programladıysanız, muhtemelen do-while döngüsü yapısıyla karşılaşmışsınızdır.
Bir do-while döngüsünde, döngü gövdesindeki - küme parantezleri ile sınırlandırılmış blok içindeki - ifadeler kümesi önce yürütülür ve ardından döngü koşulu kontrol edilir.
Aşağıdaki C örneklerini doğrudan tarayıcınızdan Geekflare'nin çevrimiçi C derleyicisinde çalıştırabilirsiniz.
Aşağıdaki kod parçacığını göz önünde bulundurun:
//do_while_example1 #include <stdio.h> int main() { int count = 1; printf("Do-While loop: \n"); do{ printf("Loop runs..."); }while(count<0); return 0; }
İşte çıktı.
Output Do-While loop: Loop runs...
Yukarıdaki örnekte:
-
count
değeri 1'dir ve döngü koşulucount < 0
. Ancak, döngü koşulu başlangıçtaFalse
olsa bile döngü bir kez çalışır. - Bu, yalnızca ilk etapta döngü koşulu
True
ise yürütülen bir while döngüsünün aksinedir.
//while_example1 #include <stdio.h> int main() { int count = 1; printf("While loop: \n"); while(count<0){ printf("Loop runs..."); } return 0; }
Belirtildiği gibi, döngü koşulu, count < 0
başlangıçta False
, count
değişkeni 1 olarak başlatılır. Dolayısıyla, yukarıdaki kodu derleyip çalıştırdıktan sonra, while döngüsü gövdesindeki ifadenin yürütülmediğini görüyoruz.
Output While loop: //loop body does not run!
while vs Do-While: Farklılıklara Genel Bir Bakış
while ve do-while döngüleri arasındaki farklara daha yakından bakalım.

Bu örneği düşünün:
//do_while_example2 #include <stdio.h> int main() { int count = 1; printf("Do-while loop: \n"); do{ printf("%d\n",count); count++; }while(count<5); return 0; }
Yukarıdaki kod hücresinde:
-
count
değişkeni 1 olarak başlatılır. - Do while döngüsü kullanıyoruz.
-
count
değişkeni, döngüden her geçiş sırasında 1 artırılır ve döngü koşulu,count < 5
olarak ayarlanır.
İşte yürütmenin nasıl gerçekleştiğinin görsel bir açıklaması: do-while döngüsünün nasıl çalıştığı ve döngü koşulunu dört kez kontrol ettiği.

Output Do-while loop: 1 2 3 4
Bunun yerine bir süre döngüsü kullanırsanız, sahip olduğumuz şey budur.
//while_example2 #include <stdio.h> int main() { int count = 1; printf("While loop: \n"); while(count<5){ printf("%d\n",count); count++; }; return 0; }
Aşağıdaki şekil while döngüsünün çalışmasını açıklamaktadır; bu örnekte, while döngüsü, döngü koşulunu beş kez kontrol eder.

Output While loop: 1 2 3 4
Yukarıdaki while ve do-while döngülerinin çıktıları aynı olsa da, bazı küçük farklılıklar vardır.
Bir süre döngüsünde, koşul denetimi önce gelir, ardından döngü gövdesi gelir. Bu nedenle, döngünün K kez çalışmasını istiyorsanız, döngü koşulunun True
olduğu yerde tam olarak K çalıştırmaları olmalıdır. K+1 yineleme sayısında koşul False
olur ve kontrol döngüden çıkar.
Öte yandan, bir do-while döngüsü kullanıyorsanız: döngü koşulu, yalnızca K döngüden geçtikten sonra K'inci kez kontrol edilir.
Peki bu marjinal iyileştirme neden yararlıdır?
Döngü koşulunun hesaplama açısından pahalı olduğunu varsayalım: örneğin, özyinelemeli bir işleve çağrı, karmaşık bir matematiksel işlem vb.
Bu gibi durumlarda, döngü gövdesinin K tekrarları için, bunun yerine bir do-while döngüsü kullanmak faydalı olacaktır.
while vs Do-While Özeti

Öğrendiğimiz temel farklılıkları tablo haline getirelim.
Döngü sırasında | Do-While Döngüsü |
Döngü koşulunu kontrol edin: Döngü gövdesinin yürütülmesinden önce | Döngü koşulunu kontrol edin: Döngü gövdesinin yürütülmesinden sonra |
Koşul başlangıçta False ise, döngü gövdesi yürütülmez. | Koşul başlangıçta False ise, döngü gövdesi tam olarak bir kez yürütülür. |
Döngü koşulu, K döngüden geçtiği için K kez kontrol edilir. | Döngü koşulu, K'nin döngüden geçmesi için K-1 kez kontrol edilir. |
while döngüsü ne zaman kullanılır? – Döngü, koşul True olduğu sürece çalışmalıdır – Giriş kontrollü döngüler için – Döngü koşulu hesaplama açısından pahalı olmadığında | Do-while döngüsü ne zaman kullanılır? – Başlangıçta bir Yanlış döngü koşulu için döngü en az bir kez çalıştırılmalıdır – Çıkış kontrollü döngüler için – Döngü koşulu hesaplama açısından pahalı olduğunda |
Python'da Do-While Döngü Davranışını Taklit Etme
Önceki bölümden, do-while döngüsünü taklit etmek için aşağıdaki iki koşulumuz var:

- Döngü gövdesindeki ifadeler, döngü koşulunun
True
veyaFalse
olmasına bakılmaksızın en az bir kez yürütülmelidir. - Döngü gövdesinde deyimler yürütüldükten sonra koşul kontrol edilmelidir. Koşul
False
ise, denetim döngüden çıkmalıdır: denetimden çık.
Python'da Sonsuz while Döngüsü ve Break İfadesi

Aşağıda gösterildiği gibi Python'da sonsuz bir while döngüsü tanımlayabilirsiniz.
while True: pass # Instead of True, you can have any condition that is always True while always-True-condition: pass
break
ifadesi, bir döngü gövdesinden çıkmak ve kontrolü döngü gövdesi dışındaki ilk ifadeye aktarmak için kullanılabilir.
while <condition>: if <some-condition>: break
C'deki ilk do-while döngüsü örneğinde, döngüye devam etme koşulu count < 0
'dır. Bu nedenle, döngüden çıkmak için koşul, sıfır veya sıfırdan büyük bir sayım değeridir ( count >= 0
).
İşte Python'daki do-while döngüsünün öykünmesi:
count = 1 while True: print("Loop runs...") if(count >= 0): break
Python Do-While Döngü Örnekleri

Önceki bölümdeki örnekleri tekrar gözden geçireceğiz ve do while döngüsünü taklit ederek onları Python'da yeniden yazacağız.
#1 . Örneği tekrar gözden geçirelim: count
beşten az olduğunda count
değişkeninin değerlerinin yazdırılması.
Döngü gövdesinin en az bir kez çalışması için sonsuz bir döngünün nasıl tanımlanacağını biliyoruz.
Sayı beşten az olduğu sürece döngü devam etmelidir. Bu nedenle, sayı beşe ulaştığında döngüden çıkmalıyız. Yani count == 5
çıkış kontrol koşuludur.
Bir araya getirerek, elimizde:
count = 1 while True: print(f"Count is {count}") count += 1 if count==5: break
Output Count is 1 Count is 2 Count is 3 Count is 4
# 2 . Sayı tahmin oyununu Python do-while yapısı olarak da yeniden yazabiliriz.
Sayı tahmin oyununda, bir kullanıcının tahminlerini önceden tanımlanmış bir gizli numaraya göre doğrularız. Kullanıcı, izin verilen maksimum deneme sayısı içinde gizli numarayı tahmin etmelidir, örneğin max_guesses
.
Kod, tahminlerinin doğru ya da yanlış olmasına bakılmaksızın kullanıcıdan girdi istemelidir. Bunu sonsuz bir while döngüsü kullanarak yapabiliriz.
Peki döngüden ne zaman çıkmalıyız?
Aşağıdakilerden herhangi biri meydana geldiğinde kontrol döngüden çıkmalıdır:
- Kullanıcı sayıyı tahmin ettiğinde
- Kullanıcı henüz sayıyı tahmin etmediğinde, ancak mevcut tahmin sayısını tükettiğinde. Kullanıcı tarafından yapılan yanlış tahmin sayısı =
max_guesses
.
Aşağıdaki kod hücresi bunu nasıl yapabileceğimizi gösteriyor.
import random low, high = 5,50 secret_number = random.choice(range(low,high)) max_guesses = 10 num_guesses = 0 while True: guess = int(input("\nGuess a number:")) num_guesses += 1 conditions = [num_guesses==max_guesses,guess==secret_number] if any(conditions): break
Döngüden çıkmak yerine, yukarıdaki koşulların her biriyle karşılaştığımızda ve ardından döngüden çıktığımızda açıklayıcı print()
ifadeleri ekleyebiliriz.
import random low, high = 5,50 secret_number = random.choice(range(low,high)) print(secret_number) max_guesses = 10 num_guesses = 0 while True: guess = int(input("\nGuess a number:")) num_guesses += 1 if guess==secret_number: print("Congrats, you guessed it right!") break if num_guesses==max_guesses: print("Sorry, you have no more guesses left!") break
Aşağıda iki örnek çıktı gösterilmiştir.
Bu örnek çıktıda, kullanıcı gizli numarayı doğru tahmin ettiğinde break ifadesi döngüden çıkar.
# Sample output when secret_number = 43 and user gets it right! Guess a number:4 Guess a number:3 Guess a number:43 Congrats, you guessed it right!
Kullanıcı mevcut maksimum tahmin sayısına ulaştığında ancak gizli numarayı doğru tahmin edemediğinde başka bir örnek çıktı.
# Sample output when secret_number = 33 and user fails to guess it right! Guess a number:3 Guess a number:15 Guess a number:21 Guess a number:50 Guess a number:17 Guess a number:6 Guess a number:18 Guess a number:5 Guess a number:12 Guess a number:43 Sorry, you have no more guesses left!
Çözüm
Umarım bu eğitim, Python'da do-while döngüsünü nasıl taklit edeceğinizi anlamanıza yardımcı olmuştur.
İşte önemli çıkarımlar:
- Döngü gövdesinin en az bir kez çalışmasını sağlamak için sonsuz bir döngü kullanın. while True gibi önemsiz bir sonsuz döngü olabilir veya koşul her zaman True olacak şekilde while <condition> olabilir.
- Döngü içindeki çıkış koşulunu kontrol edin ve belirli bir koşul altında döngüden çıkmak için break ifadesini kullanın.
Ardından, Python'da for döngülerini ve enumerate() işlevini nasıl kullanacağınızı öğrenin.