Glossar

Wähle eines der Schlüsselwörter auf der linken Seite…

Programmieren mit PythonBedingungen

Lesezeit: ~10 min

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 -Wert von einem Vergleichsoperator (==, <, <=, ...) zurückgegeben wird. Python stellt zu diesem Zweck 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? Versuche, das folgende Beispiel auszuführen.

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
 
Bruno
Bruno Bruno