So konstruieren Sie While-Schleifen in Python 3

Einführung

Computerprogramme eignen sich hervorragend zum Automatisieren und Wiederholen von Aufgaben, sodass dies nicht erforderlich ist. Eine Möglichkeit, ähnliche Aufgaben zu wiederholen, ist die Verwendung vonloops. In diesem Tutorial werden wir Pythonswhile loopbehandeln.

Einewhile-Schleife implementiert die wiederholte Ausführung von Code basierend auf einer gegebenenBoolean-Bedingung. Der Code in einemwhile-Block wird ausgeführt, solange diewhile-Anweisung True ergibt.

Sie können sich diewhile-Schleife als sich wiederholendeconditional statement vorstellen. Nach einerif-Anweisung führt das Programm weiterhin Code aus, aber in einerwhile-Schleife springt das Programm zum Anfang der while-Anweisung zurück, bis die Bedingung False ist.

Im Gegensatz zufor loops, die eine bestimmte Anzahl von Malen ausgeführt werden, basierenwhile-Schleifen bedingt, sodass Sie nicht wissen müssen, wie oft der eingehende Code wiederholt werden soll.

While-Schleife

In Python sind die Schleifen vonwhilefolgendermaßen aufgebaut:

while [a condition is True]:
    [do something]

Das, was gerade getan wird, wird solange ausgeführt, bis die zu bewertende Bedingung nicht mehr erfüllt ist.

Erstellen wir ein kleines Programm, das einewhile-Schleife ausführt. In diesem Programm werden Sie aufgefordert, ein Passwort einzugeben. Während Sie diese Schleife durchlaufen, gibt es zwei mögliche Ergebnisse:

  • Wenn das Passwortiskorrekt ist, wird die Schleifewhile beendet.

  • Wenn das Passwortnotkorrekt ist, wird die Schleifewhile weiterhin ausgeführt.

Wir erstellen eine Datei mit dem Namenpassword.py in einem Texteditor Ihrer Wahl und initialisieren zunächst die Variablepassword als leerestring:

password.py

password = ''

Die leere Zeichenfolge wird verwendet, um Eingaben des Benutzers innerhalb derwhile-Schleife aufzunehmen.

Jetzt konstruieren wir die Anweisungwhilezusammen mit ihrer Bedingung:

password.py

password = ''

while password != 'password':

Hier folgt aufwhile die Variablepassword. Wir prüfen, ob die Variablepassword auf die Zeichenfolgepassword festgelegt ist (basierend auf den Benutzereingaben später). Sie können jedoch eine beliebige Zeichenfolge auswählen.

Dies bedeutet, dass, wenn der Benutzer die Zeichenfolgepassword eingibt, die Schleife stoppt und das Programm weiterhin Code außerhalb der Schleife ausführt. Wenn jedoch die vom Benutzer eingegebene Zeichenfolge nicht der Zeichenfolgepassword entspricht, wird die Schleife fortgesetzt.

Als Nächstes fügen wir den Codeblock hinzu, der innerhalb derwhile-Schleife etwas bewirkt:

password.py

password = ''

while password != 'password':
    print('What is the password?')
    password = input()

Innerhalb derwhile-Schleife führt das Programm eine print-Anweisung aus, die zur Eingabe des Kennworts auffordert. Dann wird die Variablepassword mit der Funktioninput() auf die Benutzereingabe gesetzt.

Das Programm prüft, ob die Variablepassword der Zeichenfolgepassword zugeordnet ist, und wenn dies der Fall ist, endet die Schleifewhile. Geben wir dem Programm eine weitere Codezeile, wenn dies geschieht:

password.py

password = ''

while password != 'password':
    print('What is the password?')
    password = input()

print('Yes, the password is ' + password + '. You may enter.')

Die letzteprint()-Anweisung befindet sich außerhalb derwhile-Schleife. Wenn der Benutzer alsopassword als Kennwort eingibt, wird die endgültige print-Anweisung außerhalb der Schleife angezeigt.

Wenn der Benutzer jedoch niemals das Wortpassword eingibt, gelangt er niemals zur letzten Anweisungprint() und bleibt in einer Endlosschleife stecken.

Eininfinite loop tritt auf, wenn ein Programm innerhalb einer Schleife ausgeführt wird und diese niemals verlässt. Drücken SieCTRL + C, um Endlosschleifen in der Befehlszeile zu verlassen.

Speichern Sie das Programm und führen Sie es aus:

python password.py

Sie werden aufgefordert, ein Kennwort einzugeben, und können es dann mit verschiedenen Eingabemöglichkeiten testen. Hier ist eine Beispielausgabe des Programms:

OutputWhat is the password?
hello
What is the password?
sammy
What is the password?
PASSWORD
What is the password?
password
Yes, the password is password. You may enter.

Beachten Sie, dass bei Zeichenfolgen zwischen Groß- und Kleinschreibung unterschieden wird, es sei denn, Sie verwenden vor dem Überprüfen auchstring function, um die Zeichenfolge in Kleinbuchstaben umzuwandeln.

Beispielprogramm mit While-Schleife

Nachdem wir die allgemeine Prämisse einerwhile-Schleife verstanden haben, erstellen wir ein Befehlszeilen-Ratespiel, das einewhile-Schleife effektiv verwendet. Um die Funktionsweise dieses Programms am besten zu verstehen, sollten Sie auchusing conditional statements undconverting data types lesen.

Zuerst erstellen wir eine Datei mit dem Namenguess.py in einem Texteditor Ihrer Wahl. Wir möchten, dass der Computer Zufallszahlen liefert, die der Benutzer erraten kann. Daher werden wirimport dasrandom-Modul mit einerimport-Anweisung. Wenn Sie mit diesem Paket nicht vertraut sind, erfahren Sie mehr übergenerating random numbers from the Python docs.

guess.py

import random

Als nächstes weisen wir der Variablennumber eine zufällige Ganzzahl zu und halten sie im Bereich von 1 bis 25 (einschließlich), in der Hoffnung, dass dies das Spiel nicht zu schwierig macht.

guess.py

import random

number = random.randint(1, 25)

An diesem Punkt können wir in unserewhile-Schleife gelangen, indem wir zuerst eine Variable initialisieren und dann die Schleife erstellen.

guess.py

import random

number = random.randint(1, 25)

number_of_guesses = 0

while number_of_guesses < 5:
    print('Guess a number between 1 and 25:')

    guess = input()
    guess = int(guess)

    number_of_guesses = number_of_guesses + 1

    if guess == number:
        break

Wir haben die Variablenumber_of_guesses bei 0 initialisiert, sodass wir sie mit jeder Iteration unserer Schleife erhöhen, damit wir keine Endlosschleife haben. Dann haben wir die Anweisungwhile hinzugefügt, sodassnumber_of_guesses auf insgesamt 5 begrenzt ist. Nach der fünften Vermutung kehrt der Benutzer zur Befehlszeile zurück und erhält vorerst eine Fehlermeldung, wenn er etwas anderes als eine Ganzzahl eingibt.

Innerhalb der Schleife haben wir eineprint()-Anweisung hinzugefügt, um den Benutzer zur Eingabe einer Zahl aufzufordern, die wir mit der Funktioninput() aufgenommen und auf die Variableguess gesetzt haben. Dann haben wirguess von einer Zeichenfolge in eine Ganzzahl konvertiert.

Bevor die Schleife beendet ist, möchten wir auch die Variablenumber_of_guesses um 1 erhöhen, damit wir die Schleife fünfmal durchlaufen können.

Schließlich schreiben wir eine bedingteif-Anweisung, um festzustellen, ob die vom Benutzer erstelltenguess den vom Computer generiertennumber entsprechen, und verwenden in diesem Fallbreak statement aus der Schleife kommen.

Das Programm ist voll funktionsfähig und kann mit dem folgenden Befehl ausgeführt werden:

python guess.py

Obwohl es funktioniert, weiß der Benutzer im Moment nie, ob seine Vermutung korrekt ist, und er kann die vollen 5-mal erraten, ohne jemals zu wissen, ob er es richtig gemacht hat. Die Beispielausgabe des aktuellen Programms sieht folgendermaßen aus:

OutputGuess a number between 1 and 25:
11
Guess a number between 1 and 25:
19
Guess a number between 1 and 25:
22
Guess a number between 1 and 25:
3
Guess a number between 1 and 25:
8

Fügen wir einige Bedingungsanweisungen außerhalb der Schleife hinzu, damit der Benutzer eine Rückmeldung erhält, ob er die Zahl richtig erraten hat oder nicht. Diese werden am Ende unserer aktuellen Datei abgelegt.

guess.py

import random

number = random.randint(1, 25)

number_of_guesses = 0

while number_of_guesses < 5:
    print('Guess a number between 1 and 25:')
    guess = input()
    guess = int(guess)

    number_of_guesses = number_of_guesses + 1

    if guess == number:
        break

if guess == number:
    print('You guessed the number in ' + str(number_of_guesses) + ' tries!')

else:
    print('You did not guess the number. The number was ' + str(number))

Zu diesem Zeitpunkt teilt das Programm dem Benutzer mit, ob die Nummer richtig oder falsch ist. Dies kann bis zum Ende der Schleife passieren, wenn der Benutzer keine Ahnung hat.

Um dem Benutzer dabei ein wenig zu helfen, fügen wir derwhile-Schleife einige weitere bedingte Anweisungen hinzu. Diese können dem Benutzer mitteilen, ob ihre Anzahl zu niedrig oder zu hoch war, so dass sie mit größerer Wahrscheinlichkeit die richtige Anzahl erraten können. Wir werden diese vor unsererif guess == number-Zeile hinzufügen

guess.py

import random

number = random.randint(1, 25)

number_of_guesses = 0

while number_of_guesses < 5:
    print('Guess a number between 1 and 25:')
    guess = input()
    guess = int(guess)

    number_of_guesses = number_of_guesses + 1

    if guess < number:
        print('Your guess is too low')

    if guess > number:
        print('Your guess is too high')

    if guess == number:
        break

if guess == number:
    print('You guessed the number in ' + str(number_of_guesses) + ' tries!')

else:
    print('You did not guess the number. The number was ' + str(number))

Wenn wir das Programm erneut mitpython guess.py ausführen, sehen wir, dass der Benutzer mehr Unterstützung beim Erraten erhält. Wenn also die zufällig generierte Zahl12 ist und der Benutzer18 errät, wird ihm mitgeteilt, dass seine Vermutung zu hoch ist, und er kann seine nächste Vermutung entsprechend anpassen.

Es kann noch mehr getan werden, um den Code zu verbessern, einschließlich der Fehlerbehandlung, wenn der Benutzer keine Ganzzahl eingibt. In diesem Beispiel wird jedoch einewhile-Schleife in einem kurzen Befehlszeilenprogramm ausgeführt.

Fazit

In diesem Tutorial wurde erläutert, wiewhile-Schleifen in Python funktionieren und wie sie erstellt werden. While loops durchlaufen weiterhin einen Codeblock, vorausgesetzt, die in der Anweisungwhile festgelegte Bedingung ist True.

Von hier aus können Sie weitere Informationen zum Schleifen erhalten, indem Sie die Tutorials zufor loops undbreak, continue, and pass statements lesen.