In diesem Lernprogramm lernen Sie, wie Sie eine Wiederholungsschleife in Python.
In jeder Programmiersprache helfen Schleifen dabei, bestimmte Aktionen in Abhängigkeit von einer Schleifenbedingung wiederholt auszuführen. Python unterstützt die während und für Schleifenkonstrukte, unterstützt aber nicht nativ die Währenddessen Schleife.
Sie können jedoch eine do-while-Schleife emulieren, indem Sie verstehen, wie sie funktioniert - unter Verwendung vorhandener Schleifen und Schleifen Steueranweisungen in Python.
Wie das geht, werden Sie in den nächsten Minuten erfahren. Los geht's!
Was ist das Do-While-Schleifenkonstrukt?

Wenn Sie in Sprachen wie C oder C++ programmiert haben C++haben Sie wahrscheinlich schon das Konstrukt der do-while-Schleife kennen gelernt.
In einer do-while-Schleife werden die Anweisungen im Schleifenkörper - innerhalb des durch geschweifte Klammern abgegrenzten Blocks - zuerst ausgeführt und dann die Schleifenbedingung überprüft.
Sie können die folgenden C-Beispiele in Geekflare's Online-C-Compiler-direkt von Ihrem Browser aus.
Betrachten Sie den folgenden Codeschnipsel:
//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 istcount < 0
. Die Schleife wird jedoch einmal durchlaufen, obwohl die Schleifenbedingung zunächstFalse
. - Dies steht im Gegensatz zu einer während Schleife, die nur ausgeführt wird, wenn die Schleifenbedingung
True
an erster Stelle.
//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, die Schleifenbedingung, count < 0
ist False
zunächst die count
Beim Kompilieren und Ausführen des obigen Codes sehen wir also, dass die Anweisung im Körper der while-Schleife nicht ausgeführt wird.
Output
While loop:
//loop body does not run!
Während 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("%d\n",count);
count++;
}while(count<5);
return 0;
}
In der obigen Code-Zelle:
- Die
count
wird auf 1 initialisiert. - Wir verwenden eine do-while-Schleife.
- Die
count
wird bei jedem Durchlauf der Schleife um 1 erhöht, und die Schleifenbedingung wird aufcount < 5
.
Hier ist eine visuelle Erklärung, wie die Ausführung erfolgt: wie die do-while-Schleife funktioniert und viermal die Schleifenbedingung überprüft.

Output
Do-while loop:
1
2
3
4
Wenn Sie stattdessen eine while-Schleife verwenden, sieht das Ergebnis folgendermaßen aus.
//while_example2
#include <stdio.h>
int main() {
int count = 1;
printf("While loop: \n");
while(count<5){
printf("%d\n",count);
count++;
};
return 0;
}
In der folgenden Abbildung wird die Ausführung der while-Schleife erläutert; 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 feine Unterschiede.
In einer while-Schleife wird zuerst auf die Bedingung geprüft, dann folgt der Schleifenkörper. Wenn Sie also wollen, dass die Schleife läuft K Zeiten, sollte es sein genau K läuft, wobei die Schleifenbedingung lautet True
. In Iteration Nummer K+1wird die Bedingung False
und die Kontrolle bricht aus der Schleife aus.
Wenn Sie hingegen eine do-while-Schleife verwenden, wird die Schleifenbedingung nur zum K-ten Mal überprüft nachdem K bestanden hat durch die Schleife.
Warum also ist diese marginale Verbesserung hilfreich?🤔
Angenommen, die Schleifenbedingung ist rechenintensiv: Sie erfordert beispielsweise den Aufruf einer rekursiven Funktion, eine komplexe mathematische Operation usw.
In solchen Fällen wäre es bei K-Wiederholungen des Schleifenkörpers vorteilhaft, stattdessen eine do-while-Schleife zu verwenden.
While vs. Do-While Zusammenfassung

Lassen Sie uns die wichtigsten Unterschiede, die wir erfahren haben, tabellarisch darstellen. 👩🏫
While-Schleife | Do-While-Schleife |
Prüfung auf Schleifenbedingung: Vor der Ausführung des Schleifenkörpers | Prüfung auf Schleifenbedingung: Nach der Ausführung des Schleifenkörpers |
Wenn die Bedingung False wird der Schleifenkörper zunächst nicht ausgeführt. | Wenn die Bedingung False zunächst wird der Schleifenkörper ausgeführt genau einmal. |
Die Schleifenbedingung wird bei K Durchläufen durch die Schleife K-mal überprüft. | Die Schleifenbedingung wird bei K Durchläufen durch die Schleife K-1 mal überprüft. |
Wann wird die while-Schleife verwendet? - Die Schleife sollte so lange laufen, wie die Bedingung wahr ist. - Für eintrittskontrollierte Schleifen - Wenn die Schleifenbedingung nicht rechenaufwendig ist | Wann sollte man eine do-while-Schleife verwenden? - Die Schleife sollte mindestens einmal für eine anfänglich falsche Schleifenbedingung laufen - Für ausgangskontrollierte Schleifen - Wenn die Schleifenbedingung rechenaufwendig ist |
Emulation des Verhaltens von Do-While-Schleifen in Python
Aus dem vorigen Abschnitt ergeben sich die folgenden beiden Bedingungen für die Emulation der do-while-Schleife:
- Die Anweisungen im Schleifenkörper sollten ausgeführt werden mindestens einmal-unabhängig davon, ob die Schleifenbedingung
True
oderFalse
. - Die Bedingung sollte nach der Ausführung der Anweisungen im Schleifenkörper geprüft werden. Wenn die Bedingung
False
sollte die Steuerung aus der Schleife ausbrechen: Steuerung verlassen.
Unendliche While-Schleife und Break-Anweisung in Python

Sie können in Python eine unendliche while-Schleife 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 übergeben.
while <condition>:
if <some-condition>:
break
Im allerersten Beispiel einer do-while-Schleife in C lautet die Bedingung für die Fortsetzung der Schleife count < 0
. Die Bedingung für den Ausstieg aus 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
Python Do-While-Schleife Beispiele

Wir greifen die Beispiele aus dem vorigen Abschnitt wieder auf und schreiben sie in Python um, indem wir die do while-Schleife emulieren.
#1. Gehen wir noch einmal auf das Beispiel ein: Drucken Sie die Werte der count
variabel, wenn count
weniger als fünf beträgt.
Wir wissen, wie man eine Endlosschleife so definiert, dass der Schleifenkörper mindestens einmal ausgeführt wird.
Die Schleife sollte so lange fortgesetzt werden, wie der Zählerstand weniger als fünf beträgt. Wenn der Zählerstand fünf erreicht, sollten wir die Schleife also verlassen. Also count == 5
ist die Bedingung für die Ausgangskontrolle.
Zusammengefasst bedeutet dies:
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 auch umschreiben die Zahlen-Ratespiel als Python do-while-Konstrukt.
Beim Zahlenraten werden die Vermutungen eines Benutzers anhand einer vordefinierten Geheimzahl überprüft. Der Benutzer sollte die geheime Zahl innerhalb einer bestimmten Anzahl von maximal erlaubten Versuchen 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 erreichen.
Wann sollten wir also aus der Schleife aussteigen?
Die Steuerung sollte die Schleife verlassen, wenn einer der folgenden Fälle eintritt:
- Wenn der Benutzer die Zahl erraten hat
- Wenn der Benutzer die Zahl noch nicht erraten hat, aber die Anzahl der verfügbaren Schätzungen ausgeschöpft ist. Die Anzahl der falschen Schätzungen des Benutzers =
max_guesses
.
Die nachstehende Code-Zelle zeigt, wie dies geschehen kann.
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, wenn eine der oben genannten Bedingungen eintritt, und verlassen dann die Schleife.
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
Nachfolgend werden zwei Beispielausgaben gezeigt.
In dieser Beispielausgabe bricht die Break-Anweisung die Schleife ab, wenn der Benutzer die Geheimzahl richtig erraten hat.
# 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 ein weiteres Beispiel für eine Ausgabe, wenn der Benutzer die maximale Anzahl der möglichen Versuche erreicht, aber die Geheimzahl nicht richtig errät.
# 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!
Schlussfolgerung
Ich hoffe, dieses Tutorial hat Ihnen geholfen zu verstehen, wie man eine do-while-Schleife in Python emuliert.
Hier sind die wichtigsten Erkenntnisse:
- Verwenden Sie eine Endlosschleife, um sicherzustellen, dass der Schleifenkörper mindestens einmal durchläuft. Es könnte eine triviale Endlosschleife wie while True sein, oder es könnte eine während, so dass die Bedingung immer wahr ist.
- Prüfen Sie, ob die Ausgang Bedingung innerhalb der Schleife und verwenden Sie die break Anweisung, um die Schleife unter einer bestimmten Bedingung zu verlassen.
Als nächstes lernen Sie, wie man for-Schleifen und die Funktion enumerate() in Python.