Die break-Anweisung in Python (Die break-Anweisung in Python), Lektion, Seite 724092
https://www.purl.org/stefan_ram/pub/break_python (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Python-Kurs

Die break-Anweisung in Python 

Die break-Anweisung
Anweisung
.-------.
--->| break |--->
'-------'

Mit der break-Anweisung wird die Ausführung der (innersten) umgebenden  Schleife beendet.

main.py

while True:

print( 'abc' )

break

print( 'def' )

print( 'ghi' )

Protokoll

abc

ghi

Man kann gedanklich direkt hinter die while-Anweisung eine pass-Anweisung einfügen und sich dann vorstellen, daß unmittelbar nach der Ausführung der break-Anweisung die Ausführung des Programms beginnend bei jener pass-Anweisung fortgesetzt wird.

Programm

while True:

print( 'abc' )

break

print( 'def' )

pass

print( 'ghi' )

Ausgabe
abc
ghi

Anwendungsbeispiel

Das folgende Programm gibt Quadrate eingegebener Zahlen aus, bis »0« eingegeben wird. Es hat aber zwei unschöne Eigenschaften:

Programm

x = 1

while x:

x = int( input( 'Zahl (0 zum Beenden)? ' ))

if x: print( 'Quadrat = ' + str( x*x ))

print( 'Ende' )

Durch eine True-Schleife mit »break« können beide  Probleme vermieden werden.

Programm

while True:

x = int( input( 'Zahl (0 zum Beenden)? ' ))

if x == 0: break

print( 'Quadrat = ' + str( x*x ))

print( 'Ende' )

Man nennt solch eine Schleife auch „Schleife und eine halbe“, da die Schleife beim letzten Durchlauf nur „zur Hälfte“ (im Sinne von „teilweise“) durchlaufen wird.

Zahlenraten mit »break«

Für dieses Beispiel nehmen wir an, daß ein Modul »user« mit einer Funktion »get« angelegt wurde, die eine Zahl vom Benutzer einliest.

user.py
def get( prompt='' ):
return int( input( prompt ))

Das Zahlenratespiel kann die Anweisungen »break« nun verwenden, um aus der Ratenschleife auszubrechen, sobald die richtige Zahl eingegeben wurde.

main.py

from random import random
from user import get

zahl = int( random() * 100 )
print( "Ich habe mir eine Zahl zwischen 0 und 99 ausgedacht." )

while True:
eingabe = get( "Welche Zahl habe ich mir ausgedacht? " )
if eingabe > zahl:
print( "Zu groß!" )
elif eingabe < zahl:
print( "Zu klein!" )
else:
print( "Richtig!" )
break

Übungsfragen

?   Übungsfrage

Was gibt das folgende Programm aus?

main.py

x = 3

while x < 8:

x = x + 2

if x == 5: break

print( x )

if x == 6: break

print( 'Ende' )

?   Übungsfrage

Was gibt das folgende Programm aus?

main.py

x = 2

while x < 9:

x = x + 2

if x == 5: break

print( x )

if x == 6: break

print( 'Ende' )

Übungsaufgaben

/   Übungsaufgabe

Schreiben Sie die while-Schleife aus dem folgenden Beispiel so um, daß sich die Schleife weiterhin verhält wie im Beispiel, aber nach Eingabe von »0« nichts mehr ausgegeben wird.

Eine ähnliche Aufgabe wurde früher schon einmal gestellt. Bei der Lösung dieser Aufgabe hier soll nun »break« verwendet werden.

Beispiel 0

x = 1

while x:

x = int( input( 'Zahl (0 zum Beenden)? ' ))

print( 'Quadrat = ' + str( x*x ))

Möglicher Konsolendialog

Zahl (0 zum Beenden)? 2

Quadrat = 4

Zahl (0 zum Beenden)? 9

Quadrat = 81

Zahl (0 zum Beenden)? 0

Quadrat = 0

(Ende des Programms)

/   Übungsaufgabe

Schreiben Sie eine Funktion, welche zu einer nicht-negativen ganzen Zahl n, die Liste aller Dezimalnumeralia nicht-negativer ganzer Zahlen von 0 bis n  (ausschließlich) als Zeichenfolge ergibt (in aufsteigender Reihenfolge), wobei benachbarte Numeralia durch das Zeichenpaar »« (Komma und Leerzeichen) getrennt sein sollen.

Beispielsweise sollte ein Aufruf der Funktion mit dem Zahlenwert «3» die Zeichenfolge »0, 1, 2« ergeben.

Empfehlungen zur Vorgensweise: Zuerst die Dokumentation (einschließlich Tests) schreiben. Gedächtnisstütze für bei Modultests verwendete Schreibweisen: »from doctest import testmod«, »"""«, »>>> « und »testmod()«.

Vereinfachte Aufgabenstellung:
Eine Funktion soll eine Zahlenliste wie "0, 1, 2" ergeben.
Zwischen zwei Zahlen soll in dem Text immer ein Komma und ein Leerzeichen stehen.
Die erste Zahl soll 0 sein, die nächste Zahl 1, die nächste Zahl 2 und so weiter.
Diese Funktion wird mit einer Zahl als Argument aufgerufen.
Die größte Zahl der Zahlenliste soll eins weniger als der Wert dieses Arguments sein.
Beispielsweise kann jemand die Funktion mit dem Argumentwert 5 aufrufen.
Dann soll das Ergebnis der Funktion "0, 1, 2, 3, 4" sein.

Exercise text in English: Write a function that, given a non-negative integer n, will return a string with a list of all decimal numerals of non-negative integers from 0 up to n  (excluding n ) as a string with adjacent numerals separated by the character pair »« (a comma and a space). For example, a call to the function with the number «3» should result in the string »0, 1, 2«.

Simplified exercise text in English:
A function should return a list of numbers as a string, such as "0, 1, 2".
There should always be a comma and a space between two numbers.
The first number should be 0, the next number 1, the next number 2 and so on.
The function is called with one number as an argument.
The largest number in the list should be one less than the value of this argument.
For example, someone may call the function with the argument value 5.
Then the result of the function should be “0, 1, 2, 3, 4”.

Strukturierte Programmierung ⃗

Ein Eingang  eines Programmstücks besteht aus einem Teil eines Programmstücks, der beim Ablauf eines Programms zuerst ausgeführt werden könnte (vor anderen Teilen des Programmstücks).

Ein Eingang einer while-Schleife

Eingang
|
|
V

while True:

x = int( input( 'Zahl (0 zum Beenden)? ' ))

if x == 0: break

print( 'Quadrat = ' + str( x*x ))

print( 'Ende' )

Ein Ausgang  eines Programmstücks besteht aus einem Teil des Programmstücks, das als letztes ausgeführt werden kann und einem Teil außerhalb des Programmstücks, der als nächster ausgeführt werden kann (der zweite Teil kann auch das Ende des Programm sein).

Ein Ausgang einer while-Schleife
       while True:
x = int( input( 'Zahl (0 zum Beenden)? ' ))
if x == 0: break ---.
.---------------------------'
| print( 'Quadrat = ' + str( x*x ))
'-> print( 'Ende' )

Die Schule der strukturierten Programmierung verlangt, daß jede Anweisung nur genau einen  Eingang und genau einen  Ausgang hat. Dies ist bei der obigen True-Schleife der Fall! Der Eingang befindet sich am Anfang der Schleife und der Ausgang bei »break«.

Schleifen mit »break« könnten unübersichtlich  werden, wenn es hinter »while« eine kompliziertere  Bedingung als »True« gibt, oder mehrere  break-Ausgänge verwendet werden.

Schleifen  mit genau einem  Eingang und genau einem  Ausgang sollten bevorzugt werden, weil sie es einfacher machen, Anweisungen zum Programm hinzuzufügen, die vor oder hinter der Schleife ausgeführt werden sollen. Allerdings kann es besser sein, Abweichungen von dieser Regel in Kauf zu nehmen, wenn ihre Befolgung Nachteile mit sich bringt, welche die Vorteile ihrer Einhaltung überwiegen. Verstöße gegen diese Regel sind weniger schlimm, wenn alle Ausgänge eines Programmstücks zur selben Fortsetzung gehen oder wenn das betreffende Programmstück sich in einer Funktion befindet, deren Quelltext nur klein ist.

 

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 stefanram724092 stefan_ram:724092 Die break-Anweisung in Python Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd724092, slrprddef724092, 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/break_python