Programmieren mit PythonBedingungen
Betrachten wir eine einfache Aufgabe, die von irgendeiner Software am Computer ausgeführt wird, wie z.B. das Hervorheben aller Zeilen in einer Tabelle, die in der dritten Spalte einen Wert größer als 10 haben. Dazu benötigen wir eine neue Funktion die von Programmiersprachen zur Verfügung gestellt wird: wir wollen Code (nämlich den Code, der eine Zeile markiert) nur dann ausführen wenn eine bestimmte Bedingung erfüllt ist, also je nachdem welchen if
-Anweisungen zur Verfügung.
Bedingungen
Wir können eine if
-Anweisung verwenden, um verschiedene Blöcke anzugeben, die abhängig vom Wert eines booleschen Ausdrucks ausgeführt werden sollen. Wenn der Wert True ist mache das, sonst (else
) mache etwas anderes. Die folgende Funktion berechnet beispielsweise das Vorzeichen des eingegebenen Wertes x
.
def sgn(x): if x > 0: return +1 elif x == 0: return 0 else: return -1 sgn(-5)
Bedingte Ausdrücke können auch als ternäre (dreigeteilte) Bedingungen geschrieben werden.«Wahr-Wert» if «Bedingung» else «Falsch-Wert»
. Die folgende Version der Funktion sgn
gibt beispielsweise die gleichen Werte wie die obige zurück, außer für x == 0
.
def sgn(x): return +1 if x > 0 else -1 sgn(-5)
Übungen
Übung
Kann der else
Teil einer if
-Anweisung weggelassen werden?
x = 0.5 if x < 0: print("x is negative") elif x < 1: print("x is between 0 and 1")
Übung
Schreibe eine Funktion namens my_abs
, die den Absolutbetrag der eingegebenen Zahl berechnet. Ersetze das Schlüsselwort pass
durch einen entsprechenden Codeblock.
def my_abs(x): pass # hier Code einfügen def test_abs(): assert my_abs(-3) == 3 assert my_abs(5.0) == 5.0 assert my_abs(0.0) == 0.0 return "Test erfolgreich ausgeführt!" test_abs()
Übung
Schreibe eine Funktion, die den Quadranten (1, 2, 3 oder 4) zurückgibt, in dem sich der Punkt (x,y)
befindet. Beachte, dass die Quadranten gegen den Uhrzeigersinn nummeriert sind: Der nordöstliche Quadrant ist Quadrant 1, der nordwestliche Quadrant ist 2, und so weiter. Der Einfachheit halber kannst du davon ausgehen, dass sowohl x
als auch y
ungleich Null sind.
Tipp: Dabei solltest du vielleicht verschachtelte if...else
Blöcke innerhalb eines anderen if...else
Blocks verwenden. Beachte dabei die unterschiedlichen Einzüge der Blöcke!
def quadrant(x,y): pass # hier Code einfügen def test_quadrant(): assert quadrant(1.0, 2.0) == 1 assert quadrant(-13.0, -2) == 3 assert quadrant(4, -3) == 4 assert quadrant(-2, 6) == 2 return "Tests bestanden!" test_quadrant()
Lösung. Eine mögliche Lösung:
def quadrant(x,y): if x > 0: if y > 0: return 1 else: return 4 else: if y > 0: return 2 else: return 3