So emulieren Sie Do-While-Schleifen in Python

In diesem Tutorial erfahren Sie, wie Sie eine Do-While-Schleife in Python emulieren.

In jeder Programmiersprache helfen Ihnen Schleifen, bestimmte Aktionen abhängig von einer Schleifenbedingung wiederholt auszuführen. Python unterstützt die While- und For-Schleifenkonstrukte, unterstützt jedoch nicht nativ die Do-While-Schleife.

Sie können jedoch eine do-while-Schleife emulieren, indem Sie verstehen, wie sie funktioniert – indem Sie vorhandene Schleifen und Schleifensteuerungsanweisungen in Python verwenden.

Wie das geht, erfahren Sie in den nächsten Minuten. Lass uns anfangen!

Was ist das Do-While-Loop-Konstrukt?

Wenn Sie in Sprachen wie C oder C++ programmiert haben, sind Sie wahrscheinlich schon auf das do-while-Schleifenkonstrukt gestoßen.

In einer Do-While-Schleife wird zuerst der Satz von Anweisungen im Schleifenkörper – innerhalb des durch geschweifte Klammern begrenzten Blocks – ausgeführt, und dann wird die Schleifenbedingung überprüft.

Sie können die folgenden C-Beispiele im Online-C-Compiler von wdzwdz ausführen – direkt in Ihrem Browser.

Betrachten Sie das folgende Code-Snippet:

//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;
}

Hier ist die Ausgabe.

Output

Do-While loop: 
Loop runs...

Im obigen Beispiel:

  • Der Wert von count ist 1, und die Schleifenbedingung ist count < 0. Die Schleife wird jedoch einmal ausgeführt, obwohl die Schleifenbedingung anfänglich False ist.
  • Dies steht im Gegensatz zu einer while-Schleife, die nur ausgeführt wird, wenn die Schleifenbedingung überhaupt wahr ist.
//while_example1

#include <stdio.h>

int main() {
    int count = 1;
    printf("While loop: n");
    
    while(count<0){
        printf("Loop runs...");
        }

    return 0;
}

Wie bereits erwähnt, ist die Schleifenbedingung, count < 0, False. Zunächst wird die count-Variable auf 1 initialisiert. Wenn wir also den obigen Code kompilieren und ausführen, sehen wir, dass die Anweisung im While-Schleifenkörper nicht ausgeführt wird.

Output

While loop: 
//loop body does not run!

While vs. Do-While: Ein Überblick über die Unterschiede

Schauen wir uns die Unterschiede zwischen While- und Do-While-Schleifen genauer an.

Betrachten Sie dieses Beispiel:

//do_while_example2

#include <stdio.h>

int main() {
    int count = 1;
    printf("Do-while loop: n");
    
    do{
       printf("%dn",count);
       count++;
    }while(count<5);

    return 0;
}

In der obigen Codezelle:

  • Die Zählvariable wird auf 1 initialisiert.
  • Wir verwenden eine do-while-Schleife.
  • Die Zählvariable wird bei jedem Schleifendurchlauf um 1 erhöht und die Schleifenbedingung auf Zählung < 5 gesetzt.

Hier ist eine visuelle Erklärung, wie die Ausführung erfolgt: wie die do-while-Schleife funktioniert und viermal auf die Schleifenbedingung prüft.

  So fügen Sie Musik zu Instagram Reels hinzu

Output

Do-while loop: 
1
2
3
4

Wenn Sie stattdessen eine While-Schleife verwenden, hätten wir dies.

//while_example2

#include <stdio.h>

int main() {
    int count = 1;
    printf("While loop: n");
    
    while(count<5){
       printf("%dn",count);
       count++;
    };

    return 0;
}

Die folgende Abbildung erläutert die Ausführung der While-Schleife; In diesem Beispiel überprüft die While-Schleife die Schleifenbedingung fünfmal.

Output

While loop: 
1
2
3
4

Obwohl die Ausgaben für die obigen while- und do-while-Schleifen identisch sind, gibt es einige subtile Unterschiede.

In einer While-Schleife kommt zuerst die Prüfung auf Bedingung, gefolgt vom Schleifenkörper. Wenn Sie also möchten, dass die Schleife K-mal ausgeführt wird, sollte es genau K Durchläufe geben, bei denen die Schleifenbedingung wahr ist. In Iteration Nummer K+1 wird die Bedingung falsch und die Steuerung bricht aus der Schleife aus.

Wenn Sie dagegen eine do-while-Schleife verwenden: Die Schleifenbedingung wird erst zum K-ten Mal überprüft, nachdem K die Schleife durchlaufen hat.

Warum ist diese geringfügige Verbesserung hilfreich?🤔

Angenommen, die Schleifenbedingung ist rechenintensiv: beinhaltet beispielsweise einen Aufruf einer rekursiven Funktion, eine komplexe mathematische Operation und so weiter.

In solchen Fällen wäre es für K Wiederholungen des Schleifenkörpers vorteilhaft, stattdessen eine do-while-Schleife zu verwenden.

While vs. Do-While-Zusammenfassung

Lassen Sie uns die wichtigsten Unterschiede tabellieren, die wir gelernt haben. 👩‍🏫

While LoopDo-While LoopCheck auf Schleifenbedingung: Vor der Ausführung des SchleifenkörpersCheck auf Schleifenbedingung: Nach der Ausführung des SchleifenkörpersWenn die Bedingung anfangs False ist, wird der Schleifenkörper nicht ausgeführt.Wenn die Bedingung anfangs False ist, wird der Schleifenkörper wird genau einmal ausgeführt. Die Schleifenbedingung wird K-mal überprüft, damit K die Schleife durchläuft. Die Schleifenbedingung wird K-1-mal überprüft, wenn K die Schleife durchläuft. Wann wird die While-Schleife verwendet?
– Schleife soll laufen solange die Bedingung wahr ist
– Für eingangsgesteuerte Schleifen
– Wenn die Schleifenbedingung nicht rechenintensiv istWann sollte eine do-while-Schleife verwendet werden?
– Schleife sollte mindestens einmal für eine Schleifenbedingung von anfänglich False ausgeführt werden
– Für ausgangsgesteuerte Schleifen
– Wenn die Schleifenbedingung rechenintensiv ist

Emulieren des Do-While-Loop-Verhaltens in Python

Aus dem vorherigen Abschnitt haben wir die folgenden zwei Bedingungen, um die do-while-Schleife zu emulieren:

  • Die Anweisungen im Schleifenkörper sollten mindestens einmal ausgeführt werden – unabhängig davon, ob die Schleifenbedingung True oder False ist.
  • Die Bedingung sollte nach der Ausführung von Anweisungen im Schleifenkörper überprüft werden. Wenn die Bedingung falsch ist, sollte die Steuerung aus der Schleife ausbrechen: Steuerung beenden.
  So entfernen Sie alle Formatierungen aus dem Text der Zwischenablage mit einer Tastenkombination

Unendliche While-Schleife und Break-Anweisung in Python

Sie können eine unendliche While-Schleife in Python definieren, wie unten gezeigt.

while True:
    pass

# Instead of True, you can have any condition that is always True

while always-True-condition:
   pass

Die break-Anweisung kann verwendet werden, um aus einem Schleifenkörper auszubrechen und die Kontrolle an die erste Anweisung außerhalb des Schleifenkörpers zu übertragen.

while <condition>:
    if <some-condition>:
        break

Im allerersten Beispiel einer do-while-Schleife in C ist die Bedingung zum Fortsetzen der Schleife count < 0. Die Bedingung zum Verlassen der Schleife ist also ein Zählwert von null oder größer als null (count >= 0).

Hier ist die Emulation der do-while-Schleife in Python:

count = 1
while True:
    print("Loop runs...")
    if(count >= 0):
        break

Beispiele für Python-Do-While-Schleifen

Wir greifen die Beispiele aus dem vorherigen Abschnitt noch einmal auf und schreiben sie in Python neu, indem wir die do while-Schleife emulieren.

#1. Betrachten wir das Beispiel noch einmal: Werte der count-Variablen ausgeben, wenn count kleiner als fünf ist.

Wir wissen, wie man eine Endlosschleife so definiert, dass der Schleifenkörper mindestens einmal ausgeführt wird.

Die Schleife sollte fortgesetzt werden, solange die Zählung kleiner als fünf ist. Wenn die Zählung fünf erreicht, sollten wir daher aus der Schleife ausbrechen. count == 5 ist also die Ausgangskontrollbedingung.

Zusammengenommen haben wir:

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. Wir können das Zahlenratespiel auch als Python-do-while-Konstrukt umschreiben.

Beim Zahlenratespiel validieren wir die Vermutungen eines Benutzers anhand einer vordefinierten Geheimzahl. Der Benutzer sollte die Geheimzahl innerhalb einer bestimmten Anzahl maximal zulässiger Versuche erraten, sagen wir max_guesses.

Der Code sollte den Benutzer zur Eingabe auffordern, unabhängig davon, ob seine Vermutung richtig oder falsch ist. Wir können dies mit einer unendlichen While-Schleife tun.

  So suchen Sie auf Snapchat nach Storys

Wann sollten wir also aus der Schleife ausbrechen?

Die Steuerung sollte aus der Schleife ausbrechen, wenn einer der folgenden Fälle eintritt:

  • Wenn der Benutzer die Nummer erraten hat
  • Wenn der Benutzer die Zahl noch nicht erraten hat, aber die Anzahl der verfügbaren Vermutungen erschöpft hat. Die Anzahl der falschen Vermutungen durch den Benutzer = max_guesses.
  • Die Codezelle unten zeigt, wie wir es tun können.

    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

    Anstatt aus der Schleife auszubrechen, können wir erklärende print()-Anweisungen hinzufügen, wenn wir auf jede der oben genannten Bedingungen stoßen, und dann aus der Schleife ausbrechen.

    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

    Zwei Beispielausgaben sind unten gezeigt.

    In dieser Beispielausgabe bricht die break-Anweisung aus der Schleife aus, wenn der Benutzer die Geheimnummer richtig errät.

    # 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!
    

    Hier ist eine weitere Beispielausgabe, wenn der Benutzer die maximale Anzahl an verfügbaren Vermutungen erreicht, aber die geheime Zahl nicht richtig erraten kann.

    # 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!

    Fazit

    Ich hoffe, dieses Tutorial hat Ihnen geholfen zu verstehen, wie Sie eine Do-While-Schleife in Python emulieren.

    Hier sind die wichtigsten Erkenntnisse:

    • Verwenden Sie eine Endlosschleife, um sicherzustellen, dass der Schleifenkörper mindestens einmal ausgeführt wird. Es könnte eine triviale Endlosschleife sein, wie etwa while True, oder es könnte while sein, sodass die Bedingung immer True ist.
    • Suchen Sie nach der Beendigungsbedingung innerhalb der Schleife und verwenden Sie die break-Anweisung, um die Schleife unter einer bestimmten Bedingung zu verlassen.

    Als Nächstes erfahren Sie, wie Sie for-Schleifen und die Funktion enumerate() in Python verwenden.