Skip to content

while-Schleife in Python (Endlosschleife, etc.)

Python

Dieser Artikel eine genaue Schleife (wiederholte Ausführung) mit der while-Anweisung in Python.

Im Gegensatz zur for-Anweisung, sterben sequentiell iterierbare Elemente wie Liste abruft, solange wiederholt WIRD, wie der Bedingungsausdruck True ist.

Dieser Artikel hat folgenden Inhalt.

  • Grundlegende Verwendung der While-Anweisung in Python
  • Schleife beenden:break
  • Fahren Sie mit dem nächsten Zyklus fort:continue
  • Nach normaler Ausführung:else
  • Endlosschleife mit While-Anweisung
    • Mit Tastatureingabe beenden
  • Zwangsbeendigung

Siehe den following Artikel für die For-Anweisung. Die for-Anweisung ist besser geeignet, wenn Sie ein Element wie eine Liste abrufen oder nur eine bestimmte Anzahl von Malen ausführen möchten.

Anstatt die while-Anweisung zu verwenden, kann eine Endlosschleife mit der for-Anweisung und den Funktionen des itertools-Moduls der Standardbibliothek implementiert werden. Endlosschleifen mit Zählern etc. lassen sich oft einfach mit den Funktionen von itertools schreiben.

Grundlegende Verwendung der While-Anweisung in Python

Die while-Anweisung in Python wird wie folgt geschrieben:

while expression:
    ... <do something>

Ein spezifisches Beispiel ist wie folgt.

i = 0

while i < 3:
    print(i)
    i += 1
# 0
# 1
# 2

Sie können mehrere Bedingungen für den Ausdrucksteil mit und oder oder angeben.

Schleife beenden:break

Verwenden Sie Pause, um die While-Schleife zu beenden.

i = 0

while i < 3:
    print(i)
    if i == 1:
        print('!!BREAK!!')
        break
    i += 1
# 0
# 1
# !!BREAK!!

Fahren Sie mit dem nächsten Zyklus fort:continue

Sie können den Zyklus überspringen und mit Continue zum nächsten fortfahren.

break beendet die gesamte Schleife, aber Continue überspringt nur den Code nach der Continue-Anweisung im Zyklus.

while i < 3:
    if i == 1:
        print('!!CONTINUE!!')
        i += 1
        continue
    print(i)
    i += 1
# 0
# !!CONTINUE!!
# 2

Beachten Sie, dass die Variable nicht aktualisiert und die Schleife nicht unerwartet beendet WIRD, WENN SIE den Code für eine Variable schreiben, sterben in Ausdrücken wie i += 1 nach Continue used WIRD.

Die Zwangsbeendigung WIRD am Ende beschrieben.

Nach normaler Ausführung:else

Use SIE else, um etwas auszuführen, after die Schleife erfolgreich abgeschlossen wurde.

i = 0

while i < 3:
    print(i)
    i += 1
else:
    print('!!FINISH!!')
# 0
# 1
# 2
# !!FINISH!!

If die Schleife durch break beendet WIRD, WIRD die Suite in der else-Klausel nicht ausgeführt.

i = 0

while i < 3:
    print(i)
    if i == 1:
        print('!!BREAK!!')
        break
    i += 1
else:
    print('!!FINISH!!')
# 0
# 1
# !!BREAK!!

Im Falle von Continue wird die Suite in der Else-Klausel ausgeführt.

i = 0

while i < 3:
    if i == 1:
        print('!!SKIP!!')
        i += 1
        continue
    print(i)
    i += 1
else:
    print('!!FINISH!!')
# 0
# !!SKIP!!
# 2
# !!FINISH!!

Endlosschleife mit While-Anweisung

Wenn der bedingte Ausdruck in der while-Anweisung immer wahr ist, endet die Schleife nie und die Ausführung wird endlos wiederholt.

Im following Beispiel WIRD die UNIX-Zeit von time.time() erfasst und die verstrichene Zeit gemessen, um die Unterbrechungsbedingung festzulegen.

import time

start = time.time()

while True:
    time.sleep(1)
    print('processing...')
    if time.time() - start > 5:
        print('!!BREAK!!')
        break
# processing...
# processing...
# processing...
# processing...
# processing...
# !!BREAK!!

Zum Beispiel wird eine Zahl ungleich Null oder eine nicht leere Zeichenfolge als wahr betrachtet, sodass selbst während 1: usw. zu einer Endlosschleife führt.

start = time.time()

while 1:
    time.sleep(1)
    print('processing...')
    if time.time() - start > 5:
        print('!!BREAK!!')
        break
# processing...
# processing...
# processing...
# processing...
# processing...
# !!BREAK!!

Im Beispielcode wird zur Erläuterung eine Endlosschleife verwendet, aber dieselbe Operation kann wie unten gezeigt ohne eine Endlosschleife geschrieben werden.

start = time.time()

while time.time() - start <= 5:
    time.sleep(1)
    print('processing...')
else:
    print('!!FINISH!!')
# processing...
# processing...
# processing...
# processing...
# processing...
# !!FINISH!!

Mit Tastatureingabe beenden

Um die Endlosschleife per Tastatureingabe zu beenden, statt break zu setzen, fangen Sie KeyboardInterrupt mit Strg + C ab.

try:
    while True:
        time.sleep(1)
        print('processing...')
except KeyboardInterrupt:
    print('!!FINISH!!')

Wenn Sie am laufenden Terminal (Mac) oder an der Eingabeaufforderung (Windows cmd.exe) Strg + C drücken, wird die While-Schleife beendet und die Except-Klausel ausgeführt.

Informationen zur Ausnahmebehandlung finden Sie im following Artikel.

Zwangsbeendigung

Wenn Sie den bedingten Ausdruck falsch setzen, kann der Prozess unerwartet in eine Endlosschleife geraten und nie enden.

Es kann auf folgende Weise zwangsweise beendet werden.

  • Strg + C in einem laufenden Terminal
  • Beenden Sie den Vorgang im Aktivitätsmonitor oder im Task-Manager
    • Suchen Sie den Prozessnamen Python und beenden Sie ihn