7C: Schleifen

Lektion 7 besteht aus drei Teilen A, B und C, die in beliebiger Reihenfolge bearbeitet werden können.

Bis jetzt haben wir grundlegende Programmierbefehle erlernt (z.B. das Zuweisen von Werten, das Ausgeben von Werten), ebenso wie if Befehle. In dieser Lektion führen wir Schleifen ein (manchmal auch Wiederholungen oder Iterationen genannt: eine Möglichkeit, den Computer immer wieder die gleiche Sache (oder ähnliche Dinge) machen zu lassen. Zum Beispiel würde die Rechtschreibprüfung jedes Wortes in einem Dokument mit einer Schleife gemacht werden. Wir werden in dieser Lektion die beiden Arten von Python Schleifen beschreiben: while Schleifen und for Schleifen.

while Schleifen

Ein while-Statement (also ein „Während“-Statement) wiederholt einen Code-Abschnitt immer wieder, solange bestimmte Bedingungen noch erfüllt sind. Hier ist ein Beispiel:

Beispiel: Countdown

Hier ist die allgemeine Struktur:

  • Die erste Zeile ist die während - «Bedingung»:, wobei wir 'Bedingung' solche Ausdrücke nennen, die Wahr or Falsch ausgeben (so wie ein if Statement)
  • Danach setzen wir einen eingerückten Textblock (wieder so wie ein if Statement), der aus den Statements besteht, die wir immer wieder wiederholt sehen möchten. Dies nennt man den Körper.
  • Wenn du das Programm ausführst, wird das Folgende wiederholt:
    • Die Bedingung wird überprüft; wenn die Bedingung Wahr ist, wird der Körper ausgeführt und im Anschluss wiederholen wir von vorne. Erst wenn die Bedingung als Falsch beurteilt wird, endet diese Schleife.

Programmierübung: Countup
Verändere das obige Beispiel um ein Programm zu schreiben, wo wir von 1 aufsteigend zählen bis 10, und dann geben wir das Wort Blastoff! aus.
Du kannst die Eingabe für das Programm in die Box unten eingeben.

Mit Schleifen ist es einfach ein Programm zu schreiben, das ewig in einem unendlichen Kreislauf läuft.
Beispiel
Unendliche Schleife
Man bekommt die Fehlermeldung "Time Limit Exceeded" weil der CS Circles webserver ein Zeitlimit erzwingt. Nach 1 Sekunde wird das Programm beendet. Wenn du das Programm zuhause durchgeführt hättest, würde es ewig laufen (bis du es selbst beendet hättest, üblich durch das Drücken von Strg-C).

for Schleifen

Es gibt noch eine andere Art von Schleifen in Python, die man eine für-Schleife nennt. In vielen Situationen können beide Arten von Schleifen (für/während) verwendet werden, aber eine ist einfacher als die andere, also ist es hilfreich zu wissen, wie man beide verwendet. Eine for-Schleife wird gebaut, um eine Reihe von Zahlen (oder wie wir später sehen werden, irgendeine Liste von Daten) systematisch durchzugehen.

Hier ist ein Beispiel einer for-Schleife.

Die allgemeine Struktur einer numerischen for-Schleife ist

for «variableName» in range(«startValue», «tailValue»):
  «indented block of commands, called the loop "body"»
Wie immer kann der Körper mehrere Zeilen lang sein, solange alle Zeilen im selben Maß eingerückt sind. Zuerst wird der Körper der Schleife ausgeführt mit variableName der auf startValue eingestellt wird. Dann wird das Ganze wiederholt mit variableName eingestellt auf startValue+1, dann auf startValue+2, etc. Das wird nun fortgeführt bis variableName den Wert tailValue-1 hat, woraufhin die Schleife beendet ist.

Die Schleife hört mit tailValue-1 auf und nicht mit tailValue!
Beispiel

Hier ist ein Beispiel einer for-Schleife in einer anderen for-Schleife.

Beispiel
Ein 5x5 Quadrat ausgeben.
Achtung: S = S + '*' stellt ein * Zeichen ans Ende der Kette S (wie wir das in Lektion 7A gelernt haben).

Programmierübung: One Triangle
Verändere das vorangegangene Programm auf zwei Arten: Zuerst, anstatt eines Quadrats, lass es ein Dreieck zeichnen, das folgendermaßen geformt ist: ◤. Zweitens, anstatt immer fünf Zeilen zu haben, sollte die gewünschte Größe eingegeben werden. Zum Beispiel, wenn die Eingabe 3 ist, sollte die Ausgabe so aussehen:

111
11
1
Klicke hier für einen Tipp.
Du kannst die Eingabe für das Programm in die Box unten eingeben.

Die break und continue Statements

Das break (Bruch oder Abbruch) Statement ist wie ein Notausgang für eine while oder for Schleife: break sorgt für einen sofortigen Sprung zu den Befehlen nach dem Ende des Schleifenkörpers. Hier ist ein Beispiel für die Verwendung von break: das Programm liest alle Inputzeilen bis es eine findet, die besagt "END".

Beispiel
Durch alle eingegebenen Zeilen schleifen

Das continue Statement sorgt dafür, dass du den Rest einer Schleife überspringst, um dann den Körper aus der nächsten Runde zu wiederholen (üblicherweise die nächste "Iteration" genannt).

Beispiel

Übungen

Programmierübung: Square Census
Die quadrierten Zahlen sind ganze Zahlen der Form K * K, z.B. ist 9 eine quadrierte Zahl da 3 * 3 = 9. Schreibe ein Programm, das eine ganze Zahl n aus dem Input liest und alle positiven Quadrate, die kleiner sind als n ausgibt, und zwar eins pro Zeile, in aufsteigender Reihenfolge. Wenn zum Beispiel die Eingabe 16 ist, wäre die korrekte Ausgabe

1
4
9
Tipp
Du kannst die Eingabe für das Programm in die Box unten eingeben.

Programmierübung: Skipping
Weite das "Lege eine Schleife durch alle Inputzeilen" - Beispiel oben (wir haben es nochmal für dich kopiert) aus, indem du eine neue Eigenschaft hinzufügst. Jede Zeile, die gleich SKIP ist, also dem Übersprungscode, soll nicht ausgegeben werden und sollte den Zähler nicht erhöhen. Lasse das Programm einmal durchlaufen, um ein Beispiel zu sehen. Tipp
Du kannst die Eingabe für das Programm in die Box unten eingeben.

Programmierübung: Faktoren finden
Wenn a * b = n, nennen wir a * b eine Faktorisierung von n. Schreibe bitte ein Programm, das eine positive ganze Zahl n als Eingabe nimmt, und dann alle Faktorisierungen von n ausgibt. Du solltest dabei der Formatierung folgen, die im folgenden Beispiel für n=10 gegeben wird.

1 times 10 equals 10
2 times 5 equals 10
5 times 2 equals 10
10 times 1 equals 10
Tipp
Du kannst die Eingabe für das Programm in die Box unten eingeben.