Übung 7

Übung 7.1

Erstelle eine neue Funktion gruezi3 die gruezi (aus Übung 5.1) um einem weiteren Parameter uhrzeit erweitert. Die Funktion soll vor 18 Uhr (uhrzeit < 18) mit “Guten Tag” und sonst mit “Guten Abend” grüssen. Um es einfach zu halten: Die Zeitangbe muss in Dezimalzahlen erfolgen (also nicht 20:15 Uhr sondern 20.25).

Musterlösung
def gruezi3(nachname, uhrzeit):
    if(uhrzeit < 18):
        grussform = "Tag"
    else:
        grussform = "Abend"

    return "Guten " + grussform + " " + nachname
# die Lösung sollte etwa folgendermasssen funktionieren:

gruezi3("Guido", uhrzeit = 21)
'Guten Abend Guido'

Übung 7.2

Erweitere die Funktion gruezi2 so, dass zwischen folgende Uhrzeiten berücksichtigt werden:

Tabelle 27.1: Uhrzeiten und ihre Begrüssungsformen
Uhrzeit Begrüssungsform
5 bis 11 Uhr Guten Morgen
11 bis 18 Uhr Guten Tag
18 bis 22 Uhr Guten Abend
22 bis 5 Uhr Gute Nacht

Das Problem ist etwas schwierig zu Packen weil wir die “von - bis” Uhrzeiten in eine Ja/Nein Logik überführen müssen. Überlege dir zuerst eine Ausführungslogik und schreibe danach die if, elifund else Operationen. Im Dropdown unten ist unser Vorschlag.

Musterlösung
def gruezi2(nachname, anrede, uhrzeit):
    if(uhrzeit < 5):
        was = "Gute Nacht"
    elif(uhrzeit < 11):
        was = "Guten Morgen"
    elif(uhrzeit < 18):
        was = "Guten Tag"
    elif(uhrzeit < 22):
        was = "Guten Abend"
    else:
        was = "Gute Nacht"

    return was + ", " + anrede + " "+ nachname

Teste die Funktion mit verschiedenen Optionen um sicherzustellen, dass sie richtig funktioniert.

Übung 7.2

Erweitere die Funktion bmi aus Übung 6.3 so, dass statt dem berechneten BMI der “Nutritional status” aufgrund der WHO Klassifizierung ausgegeben wird:

Tabelle 27.2: WHO Nutritional status
BMI Nutritional status
Below 18.5 Underweight
18.5–24.9 Normal weight
25.0–29.9 Pre-obesity
30.0–34.9 Obesity class I
35.0–39.9 Obesity class II
Above 40 Obesity class III
Musterlösung
def bmi2(groesse_m, gewicht_kg):
    bmi = gewicht_kg / (groesse_m * groesse_m)
    if(bmi < 18.5):
        cat = "Underweight"
    elif(bmi <= 24.9):
        cat = "Normal weight"
    elif(bmi <= 29.9):
        cat = "Pre-obesity"
    elif(bmi <= 34.9):
        cat = "Obesity class I"
    elif(bmi <= 39.9):
        cat = "Obesity class II"
    else:
        cat = "Obesity class III"
    return "Who classification: " + cat
# Der Output sollte etwa folgedermassen aussehen
bmi2(1.7, 70)
'Who classification: Normal weight'