This is an old revision of the document!
Schleifen: while
Schleifen, werden benötigt, um einen Codeblock, den man auch als Schleifenkörper bezeichnet, wiederholt auszuführen. In Python gibt es zwei Schleifentypen: die while-Schleife und die for-Schleife.
Die meisten Schleifen enthalten einen Zähler oder ganz allgemein Variablen, die im Verlauf der Berechnungen innerhalb des Schleifenkörpers ihre Werte ändern. Ausserhalb, d.h. noch vor dem Beginn der Schleife, werden diese Variablen initialisiert.
- Zähler werden ausserhalb der Schleife initialisiert.
Vor jedem Schleifendurchlauf wird geprüft, ob ein Ausdruck, in dem diese Variable oder Variablen vorkommen, wahr ist. Dieser Ausdruck bestimmt das Endekriterium der Schleife. Solange die Berechnung dieses Ausdrucks “True” liefert wird der Rumpf der Schleife ausgeführt. Nachdem alle Anweisungen des Schleifenkörpers durchgeführt worden sind, springt die Programmsteuerung automatisch zum Anfang der Schleife, also zur Prüfung des Endekriteriums zurück und prüft wieder, ob diese nochmals erfüllt ist. Wenn ja, geht es wie oben beschrieben weiter, ansonsten wird der Schleifenkörper nicht mehr ausgeführt und es wird mit dem Rest des Skriptes fortgefahren. Das nebenstehende Diagramm zeigt dies schematisch.
- Solange das Kriterium erfüllt ist (TRUE) wird der Code innerhalb der Schleife ausgeführt.
Kopieren, testen und verstehen Sie folgenden Code:
# Ganze Zahl einlesen zahl = inputInt("Bitte eine Ganzzahl:") # Der Abstand um das '>'-Zeichen ist optional # Der Doppelpunkt am Ende der if-Zeile muss stehen # Danach wird der Code eingerückt. if zahl > 10: print("Ihre Zahl ist grösser als 10") print("Wird nur ausgegeben, wenn die Zahl grösser als 10 ist...") print("Das wird immer ausgegeben, weil nicht mehr eingerückt und damit nicht mehr im 'if' drin.")
Nach if
folgt eine Bedingung, die True
oder False
ergibt. Bedingungen sind meist Vergleiche:
==
: Gleichheit. Achtung: Das einfache=
ist eine Zuweisung und sollte imif
nicht verwendet werden.!=
Ungleichheit.<
,<=
,>=
,>
: Kleiner, kleiner gleich, grösser gleich, grösser.
Bedingungen können negiert und verknüpft werden:
not
: Negation. Z.B. istif a!=b:
das Gleiche wieif not (a==b):
and
: Logisch und. Ergibt genau dannTrue
, wenn beide BedingungenTrue
sind. Z.B.if a==b and b==c:
or
: Logisch oder. Ergibt genau dannTrue
, wenn eine der beiden oder beide Bedingungen wahr sind. Z.B.if a==b or b==c:
True oder False? Bei den letzen beiden Aufgaben nicht rechnen, sondern überlegen!
2>3
7>9 or 9>7
not(True and (False or True))
234*345<321*251 and False
1234*4321<2468*2160 or True
Mit else
kann ein Code-Block begonnen werden, der ausgeführt wird, wenn das vorhergehende Code-Block im if
nicht ausgeführt wurde.
a = 4 if a<3: print("a ist kleiner als 3") else: print("a ist nicht kleiner als 3")
Es ist auch möglich, mit elif
noch weitere Bedingungen zu testen und ein else
am Schluss anzufügen, das ausgeführt wird, wenn alle vorhergehenden Bedingungen falsch waren.
name = "Python" if name=="Python": print("Hallo Schlange!") elif name=="Monty": print("Da fehlt doch Python!") else: print("No comment")
Schreiben Sie ein Programm, das eine Aussentemperatur einliest und dann die Temperatur in Worten ausgibt, z.B. “kalt”, “warm”, “heiss” oder mehr Abstufungen.
Beispiel einer Ausgabe
-8°C ist kalt.
Schreiben die ein Programm, das die allgemeine lineare Gleichung $ax + b = 0$ löst. Das Programm soll die Koeffizienten $a$ und $b$ einlesen und die Lösung ausgeben. Behandeln Sie auch den Spezialfall, wenn $a=0$ ist.
Der Modulo-Operator %
haben wir bereits bei Strings für die formatierte Ausgabe angetroffen.
Werden Zahlen mit %
verknüpft, erhält man den Rest der Division. Z.B.
12 % 5
ergibt 2 (weil der Rest 2 bei der Division von 10 durch 5 bleibt).14 % 2
ergibt 0 (weil die Division von 14 durch 2 aufgeht).if a % 7 == 0:
Überprüft, ob a durch 7 teilbar ist (d.h. den Rest 0 ergibt).
FIZZ BUZZ! Programmieren Sie ein Programm, das alle Zahlen von 1 bis 100 ausgibt, aber alle jene, die durch 3 teilbar sind durch fizz
ersetzt, jene, die durch 5 teilbar sind durch buzz
ersetzt und jene, die sowohl durch 3 als auch durch 5 teilbar sind durch fizz buzz
ersetzt.
Optionale, weitere Aufgaben
- Geben Sie alle Teiler einer Zahl aus.
- Geben Sie die Primfaktorzerlegung einer Zahl aus.
- Bestimmen Sie, ob eine gegebene Zahl eine Primazahl ist oder nicht.
- Geben Sie die Primzahlen der Reihe nach aufsteigend aus.