Website-Suche

Wie man While-Schleifen in Python 3 konstruiert


Einführung

Computerprogramme sind großartig, um Aufgaben zu automatisieren und zu wiederholen, sodass wir es nicht tun müssen. Eine Möglichkeit, ähnliche Aufgaben zu wiederholen, besteht darin, Schleifen zu verwenden. In diesem Tutorial werden wir die while-Schleife von Python behandeln.

Eine while Schleife implementiert die wiederholte Ausführung von Code basierend auf einer gegebenen Booleschen Bedingung. Der Code, der sich im while Block befindet, wird ausgeführt, solange die while Anweisung als wahr bewertet wird.

Sie können die while-Schleife als eine sich wiederholende Bedingungserklärung betrachten. Nach einer if-Anweisung fährt das Programm fort, Code auszuführen, aber in einer while-Schleife springt das Programm an den Anfang der while-Anweisung zurück, bis die Bedingung falsch ist.

Im Gegensatz zu for-Schleifen, die eine bestimmte Anzahl von Malen ausgeführt werden, basieren while-Schleifen auf Bedingungen, sodass Sie nicht wissen müssen, wie oft der Code ausgeführt werden soll.

Voraussetzungen

Sie sollten Python 3 installiert und eine Programmierumgebung auf Ihrem Computer oder Server eingerichtet haben. Wenn Sie keine Programmierumgebung eingerichtet haben, können Sie auf die Installations- und Einrichtungsanleitungen für eine lokale Programmierumgebung oder für eine Programmierumgebung auf Ihrem Server verweisen, die für Ihr Betriebssystem (Ubuntu, CentOS, Debian usw.) geeignet ist.

While-Schleife

In Python werden while-Schleifen wie folgt konstruiert:

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

Das, was getan wird, wird weiterhin ausgeführt, bis die Bedingung, die bewertet wird, nicht mehr zutrifft.

Lass uns ein kleines Programm erstellen, das eine while Schleife ausführt. In diesem Programm bitten wir den Benutzer, ein Passwort einzugeben. Während wir diese Schleife durchlaufen, gibt es zwei mögliche Ergebnisse:

  • Wenn das Passwort richtig ist, wird die while-Schleife beendet.
  • Wenn das Passwort nicht korrekt ist, wird die while Schleife weiterhin ausgeführt.

Info: Um dem Beispielcode in diesem Tutorial zu folgen, öffnen Sie eine Python-interaktive Shell auf Ihrem lokalen System, indem Sie den Befehl python3 ausführen. Dann können Sie die Beispiele kopieren, einfügen oder bearbeiten, indem Sie sie nach der >>> Eingabeaufforderung hinzufügen.

Wir werden eine Datei namens password.py in unserem bevorzugten Texteditor erstellen und beginnen, die Variable password als leeren String zu initialisieren:

password = ''

Der leere String wird verwendet, um Eingaben vom Benutzer innerhalb der while-Schleife entgegenzunehmen.

Jetzt werden wir die while-Anweisung zusammen mit ihrer Bedingung erstellen:

password = ''

while password != 'password':

Hier folgt der while der Variable password. Wir überprüfen, ob die Variable password auf den String password gesetzt ist (basierend auf der späteren Benutzereingabe), aber Sie können jeden beliebigen String wählen, den Sie möchten.

Das bedeutet, dass wenn der Benutzer die Zeichenkette password eingibt, die Schleife stoppt und das Programm weiterhin jeden Code außerhalb der Schleife ausführt. Wenn jedoch die Zeichenkette, die der Benutzer eingibt, nicht gleich der Zeichenkette password ist, wird die Schleife fortgesetzt.

Als nächstes fügen wir den Codeblock hinzu, der innerhalb der while-Schleife etwas tut:

password = ''

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

Innerhalb der while-Schleife führt das Programm eine Druckanweisung aus, die nach dem Passwort fragt. Dann wird die Variable password auf die Eingabe des Benutzers mit der Funktion input() gesetzt.

Das Programm wird überprüfen, ob die Variable password auf den String password zugewiesen ist, und wenn dies der Fall ist, wird die while-Schleife enden. Lassen Sie uns dem Programm eine weitere Codezeile hinzufügen, für den Fall, dass das passiert:

password = ''

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

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

Die letzte print() Anweisung befindet sich außerhalb der while Schleife, sodass der Benutzer, wenn er password als Passwort eingibt, die endgültige Druckanweisung außerhalb der Schleife sieht.

Wenn der Benutzer jedoch das Wort password niemals eingibt, wird er nie zur letzten print()-Anweisung gelangen und wird in einer Endlosschleife gefangen sein.

Eine unendliche Schleife tritt auf, wenn ein Programm in einer Schleife ausgeführt wird und diese niemals verlässt. Um unendliche Schleifen in der Eingabeaufforderung zu beenden, drücken Sie CTRL + C.

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

  1. python password.py

Sie werden nach einem Passwort gefragt und können es dann mit verschiedenen möglichen Eingaben testen. Hier ist ein Beispielausgabe des Programms:

What 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 Strings groß- und kleinschreibungsempfindlich sind, es sei denn, Sie verwenden auch eine String-Funktion, um den String vor dem Überprüfen in Kleinbuchstaben zu konvertieren (zum Beispiel).

Beispielprogramm mit While-Schleife

Jetzt, da wir das allgemeine Konzept einer while-Schleife verstanden haben, lassen Sie uns ein Kommandozeilen-Geschicklichkeitsspiel erstellen, das eine while-Schleife effektiv nutzt. Um das Programm besser zu verstehen, sollten Sie auch über die Verwendung von Bedingungserklärungen und die Umwandlung von Datentypen lesen.

Zuerst erstellen wir eine Datei namens guess.py in unserem bevorzugten Texteditor. Wir wollen, dass der Computer zufällige Zahlen generiert, die der Benutzer erraten kann, also werden wir das random Modul mit einer import Anweisung importieren. Wenn du mit diesem Paket nicht vertraut bist, kannst du mehr über die Generierung von Zufallszahlen in der Python-Dokumentation erfahren.

import random

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

import random

number = random.randint(1, 25)

An diesem Punkt können wir in unsere while Schleife eintreten, zuerst eine Variable initialisieren und dann die Schleife erstellen.

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 Variable number_of_guesses auf 0 initialisiert, damit wir sie mit jeder Iteration unserer Schleife erhöhen können und somit eine Endlosschleife vermeiden. Dann haben wir die while-Anweisung hinzugefügt, damit die number_of_guesses auf insgesamt 5 begrenzt ist. Nach dem fünften Versuch wird der Benutzer zur Eingabeaufforderung zurückkehren, und vorerst erhält der Benutzer eine Fehlermeldung, wenn er etwas anderes als eine ganze Zahl eingibt.

Innerhalb der Schleife haben wir eine print()-Anweisung hinzugefügt, um den Benutzer aufzufordern, eine Zahl einzugeben, die wir mit der input()-Funktion entgegengenommen und der Variablen guess zugewiesen haben. Dann haben wir guess von einem String in eine Ganzzahl umgewandelt.

Bevor die Schleife zu Ende ist, möchten wir auch die number_of_guesses-Variable um 1 erhöhen, damit wir die Schleife 5 Mal durchlaufen können.

Schließlich schreiben wir eine bedingte if-Anweisung, um zu sehen, ob der guess, den der Benutzer gemacht hat, dem number entspricht, das der Computer generiert hat. Wenn ja, verwenden wir eine break-Anweisung, um aus der Schleife auszutreten.

Das Programm funktioniert einwandfrei, und wir können es mit dem folgenden Befehl ausführen:

  1. python guess.py

Obwohl es funktioniert, weiß der Benutzer derzeit nie, ob seine Vermutung korrekt ist, und er kann insgesamt 5 Mal raten, ohne jemals zu erfahren, ob er richtig lag. Ein Beispielausgabe des aktuellen Programms sieht wie folgt aus:

Guess 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

Lass uns einige bedingte Anweisungen außerhalb der Schleife hinzufügen, damit der Benutzer Feedback erhält, ob er die Zahl korrekt erraten hat oder nicht. Diese werden am Ende unserer aktuellen Datei hinzugefügt.

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))

An diesem Punkt wird das Programm dem Benutzer mitteilen, ob er die Zahl richtig oder falsch geraten hat, was möglicherweise erst am Ende der Schleife geschieht, wenn der Benutzer keine weiteren Versuche mehr hat.

Um dem Benutzer ein wenig Hilfe auf dem Weg zu geben, lassen Sie uns ein paar weitere Bedingungen in die while-Schleife einfügen. Diese können dem Benutzer mitteilen, ob seine Zahl zu niedrig oder zu hoch war, damit er wahrscheinlicher die richtige Zahl erraten kann. Wir werden diese vor unserer if guess == number-Zeile hinzufügen.

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 mit python guess.py ausführen, sehen wir, dass der Benutzer mehr gezielte Unterstützung beim Raten erhält. Wenn die zufällig generierte Zahl 12 ist und der Benutzer 18 rät, wird ihm gesagt, dass seine Schätzung zu hoch ist, und er kann seine nächste Schätzung entsprechend anpassen.

Es gibt noch mehr, was getan werden kann, um den Code zu verbessern, einschließlich der Fehlermeldung, wenn der Benutzer keine Ganzzahl eingibt. In diesem Beispiel sehen wir jedoch eine while Schleife in einem kurzen Kommandozeilenprogramm im Einsatz.

Schlussfolgerung

Dieses Tutorial erklärte, wie while Schleifen in Python funktionieren und wie man sie konstruiert. While-Schleifen führen eine Block von Code weiter aus, solange die in der while Anweisung festgelegte Bedingung wahr ist.

Von hier aus können Sie weiterhin über Schleifen lernen, indem Sie Tutorials über for-Schleifen und break-, continue- und pass-Anweisungen lesen.