Die while-else-Klausel in Python (Die while-else-Klausel in Python), article, Seite 724102
https://www.purl.org/stefan_ram/pub/while-else_python (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Python-Kurs

Die while-else-Klausel in Python 

Die Syntax  der while-else-Klausel entspricht der Syntax der if-else-Klausel einer if-Anweisung.

Aufbau einer while-Anweisung
Anweisung
                                                            .------------------------------------------.
.-----. .-----------. .-. .------------. | .----. .-. .------------. v
--->( while )--->| Ausdruck |--->( : )--->| Suite |---'--->( else )--->( : )--->| Suite |---'--->
'-----' '-----------' '-' '------------' '----' '-' '------------'

Und auch die Semantik entspricht der Semantik einer if-Anweisung: Genau dann, wenn  der bool-Wert des Ausdrucks hinter »while« bei einer Auswertung das Objekt ›False‹ ergibt, wird die Suite der else-Klausel ausgeführt und die while-Anweisung danach verlassen.

Programmbeispiele

Programmbeispiel

main.py

x = 0

while x < 0:
print( "0 ist negativ." )

else:
print( "0 ist nicht negativ" )

print( "Ende." )

Protokoll
0 ist nicht negativ
Ende.

In diesem Programmbeispiel ergibt die erste Auswertung von »x < 0« das Objekt ›False‹. Daher wird anschließend die Suite der else-Klausel ausgeführt, und die Ausgabe von »0 ist nicht negativ« erfolgt.

Programmbeispiel

main.py

x = -1

while x < 0:
print( "-1 ist negativ." )
break

else:
print( "-1 ist nicht negativ" )

print( "Ende." )

Protokoll
-1 ist negativ.
Ende.

In diesem Programmbeispiel ergibt die erste Auswertung von »x < 0« das Objekt ›True‹. Daher wird anschließend die Suite der while-Schleife ausgeführt, und die Ausgabe von »-1 ist negativ« erfolgt.

Programmbeispiel

main.py

x = 2

while x >= 0:
print( x )
x -= 1

else:
print( "Die while-Bedingung ist falsch." )

print( "Ende." )

Protokoll
2
1
0
Die while-Bedingung ist falsch.
Ende.

Hier wird die Schleife zunächst mehrfach durchlaufen, was zur Ausgabe einiger Ziffern  führt. Dann wird die Schleifenbedingung »x >= 0« gleich ›False‹, so daß die Suite der else-Klause ausgeführt wird.

Programmbeispiel

main.py

x = 2

while x >= 0:
print( x )
x -= 1
if x == -1: break

else:
print( "Die while-Bedingung ist falsch." )

print( "Ende." )

Protokoll
2
1
0
Ende.

Hier wird die Schleife zunächst mehrfach durchlaufen und dann durch »break« verlassen. Die Schleifenbedingung wurde also nie ›False‹, weswegen die else-Klausel auch nicht ausgeführt wurde.

Suchschleifen

In manchen Schleifen wird nach etwas gesucht. Wenn es gefunden wurde, muß die Suche nicht fortgesetzt werden, und die Schleife wird mit »break« verlassen. Wenn die Schleife nicht verlassen  wurde, sondern normal ausläuft, dann kann man davon ausgehen, daß nichts gefunden  wurde. Daher bietet es sich an, Code, der nach dem Finden  ausgeführt werden soll, direkt vor »break;« zu schreiben, während Code der ausgeführt werden soll, wenn nichts gefunden  wurde, hinter das »else« der while-Anweisung geschrieben werden kann.

Programmbeispiele

Das folgende Programmbeispiel sucht nach einer Zahl, deren Quadrat gleich «25» ist. Im durchsuchten Bereich von «0» bis «4» wird aber kein  solcher Wert gefunden. Entsprechend ergibt sich unter Verwendung der else-Klausel die Ausgabe »nichts gefunden«.

main.py

x = 0

while x < 5:

if x * x == 25:
print( "Wert gefunden." )
break

x += 1

else:
print( "Nichts gefunden." )

print( "Ende." )

Protokoll
Nichts gefunden.
Ende.

Das folgende Programmbeispiel sucht nach einer Zahl, deren Quadrat gleich »«25» ist. Im durchsuchten Bereich von «0» bis «9» wird auch ein solcher Wert gefunden. Entsprechend ergibt sich die Ausgabe »Wert gefunden«.

main.py

x = 0

while x < 10:

if x * x == 25:
print( "Wert gefunden." )
break

x += 1

else:
print( "nichts gefunden." )

print( "Ende." )

Protokoll
Wert gefunden.
Ende.

Übungsfragen

?   Übungsfrage

Was gibt das folgende Programm aus?

main.py

while print( 'a' ):

print( 'b' )

else:

print( 'c' )

print( 'd' )

?   Übungsfrage

Was gibt das folgende Programm aus?

main.py

while True:

print( 'b' )

break

else: # nobreak

print( 'c' )

print( 'd' )

 

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram724102 stefan_ram:724102 Die while-else-Klausel in Python Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd724102, slrprddef724102, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/while-else_python