Schleifen mit Bedingungen
Bisher haben wir nur Schleifen kennen gelernt, wo wir beim Programmieren von Anfang an wussten (oder zumindest hätten wissen können), wie oft die Schleife wiederholt wird und mit welchen Werten für die Variablen.
In der Informatik weiß man jedoch häufig nicht, wie viele Male eine bestimmte Befehlsfolge wiederholt wird, z.B. weil dies vom Benutzer abhängt. Ein typisches Beispiel ist eine wiederholte Passwort-Eingabe.
In der Regel muss ein Benutzer die Eingabe eines Passworts so lange wiederholen, bis er oder sie das richtige Passwort eingegeben hat. Solange also das eingegebene Wort ungleich dem richtigen Passwort ist, muss es der Benutzer immer wieder versuchen. Nach einer (hoffentlich kurzen) Reihe von Versuchen, erscheint ein Willkommensgruß auf dem Bildschirm. Genau dies tut das folgende Programm.
Das Wort "while" bedeutet im englischen "solange"; soweit ist das sehr
verständlich. Hinter while
steht dann eine Bedingung; in
Worten lautet diese: "Die Variable passwort
ist ungleich der
Zeichenkette "quertzu42"
." Zusammen mit while
bedeutet also die Zeile:
"Solange die Variable passwort
ungleich der
Zeichenkette "quertzu42"
ist, tue folgendes: ..."
Wie bei den Zählschleifen auch werden nach der Zeile while
...
alle weiteren eingerückten Zeilen wiederholt, solange die
hinter while
stehende Bedingung erfüllt ist.
!=
etwas
ungewöhnlich aus. Der Hintergrund ist jedoch ganz einfach: In der
Mathematik gibt es ein Symbol für "ungleich", nämlich: "$\neq$". Auf
der Computertastatur gibt es dieses Symbol jedoch nicht. Also wird zuerst das Ausrufezeichen geschrieben,
das dann (allerdings nur in unserer Phantasie) das Gleichheitszeichen durchstreicht.
Zu den Klammern um die Bedingung: In Python muss man Bedingungen zwar nicht in Klammern schreiben (in anderen Programmiersprachen schon), jedoch machen die Klammern das Programm häufig deutlich übersichtlicher.
Gleichheit und Ungleichheit als einfache Bedingungen
Bei Zeichenketten (strings) wird man in der Regel testen, ob sie gleich
oder eben nicht gleich sind. Im obigen Fall haben wir auf Ungleichheit
getestet und dabei den Vergleichsoperator !=
verwendet.
Wenn man auf Gleichheit testenwill, muss man extrem
aufpassen: Aus der Mathematik würde es nahe liegen, hier einfach
=
zu schreiben. Tatsächlich aber muss man hier zwei
Gleichheitszeichen ==
schreiben und nicht nur eines.
Ein einzelnes Gleichheitszeichen haben wir bei Zuweisungen verwendet.
So hat nach dem Befehl x=42
die Variable x
den Wert 42, egal, was sie vorher für einen Wert hatte.
Wenn wir dagegen in einer Bedingung (z.B. in einer
while
-Schleife) schreiben x==42
, so prüft
Python nur, ob die Variable tatsächlich den Wert 42 hat. Der Wert der
Variable ändert sich dadurch nicht.
Mit Zahlen funktionieren die Vergleichsoperatoren für gleich und ungleich ganz genauso, was du in den folgenden Aufgaben ausprobieren kannst.