BMI-Rechner in Python erstellen

Sobald man sich eine gewisse Zeit mit einer neuen Programmiersprache beschäftigt hat und zumindest die Grundlagen kennt, stellt sich die Frage: Wie geht es weiter? Ab diesem Zeitpunkt macht es Sinn, selbst an kleinen Programmen zu arbeiten. Dadurch besteht die Möglichkeit, das erlernte Wissen umzusetzen. In diesem Blog möchte ich deswegen kleine, einfache Programme vorstellen, die es Einsteigern ermöglichen sollen, sich intensiver mit Python auseinanderzusetzen, um so ein besseres Verständnis für die Sprache zu bekommen.

Den Anfang macht ein BMI-Rechner. Mit ihm ist es möglich, den Body Mass Index zu berechnen. Dieses Programm soll folgende Funktionalität haben:

  1. Der Benutzer gibt das Gewicht und die Körpergröße ein.
  2. Auf der Grundlage dieser Informationen wird anschließend berechnet, ob ein Normalgewicht, ein Untergewicht oder ein Übergewicht vorliegt.

Auch wenn es sich nur um eine einfache Anwendung handelt, werden hier bereits einige fundamentale Aspekte behandelt. Da wäre zum Beispiel die Frage, wie Daten vom Anwender abgefragt werden können. Daran schließt sich die Frage an, welcher Datentyp hinsichtlich dieser Daten vorliegen muss, damit sie durch einen Algorithmus verarbeitet werden können. Und schließlich soll das Ergebnis auch noch ausgegeben werden. Auch hier mag das eine oder andere zu bedenken sein.

Werfen wir zunächst einen Blick auf die Formel zur Berechnung des Body Mass Index:

Gewicht (kg) / Größe * Größe (m)

Nach der WHO-Einteilung ist das Ergebnis wie folgt zu bewerten:

  • Untergewicht: BMI < 18,5
  • Normalgewicht: BMI 18,5-24,9
  • Übergewicht: BMI > 25

Es wäre möglich, eine Lösung zu programmieren, die ohne etwaige Funktionen auskommt. Zur besseren Übersicht werden in diesem Beispiel jedoch Funktionen verwendet. Außerdem wird ein Einstiegspunkt definiert, über den die Funktion main() aufgerufen wird. Der Code, der den Einstieg in dieses Programm festlegt, sieht wie folgt aus:

if __name__ == "__main__":
    main()

Was es mit if __name__ == "__main__" auf sich hat, wird in diesem Tutorial erklärt.

Dieser Code ruft die Funktion main() auf, die wie folgt aussieht:

def main():
    weight: float = float(input("Please enter your weight (kg): "))
    height: float = float(input("Please enter your height (m): "))

    calculate_bmi(weight, height)

Diese Funktion enthält den Code, über den der Benutzer aufgefordert wird, das Gewicht und die Größe eingeben soll. Realisiert wird dies über die Funktion input(). Bei den eingegebenen Werten handelt es sich um Zeichenketten (Strings). Damit lässt sich schwerlich rechnen, weswegen eine Umwandlung zum Datentyp float vorgenommen wird. Die eingegebenen Werte werden in den Variablen weight und height gespeichert. Außerdem werden in diesem Projekt Datentypen explizit angegeben (type annotations). Anschließend können diese Werte als Argumente an die Funktion calculate_bmi() übergeben werden.

Kommen wir zum Schluss zur Berechnung des BMI. Die eigentliche Berechnung erledigt diese Zeile:

bmi: float = weight / (height * height)

Anschließend erfolgt die Auswertung, die über eine if-Verzweigung realisiert wird:

if bmi < 18.5:
        print("Underweight")
    elif bmi >= 25:
        print("Overweight")
    else:
        print("Normal weight")

Die komplette Funktion calculate_bmi() sieht also folgendermaßen aus:

def calculate_bmi(weight: float, height: float):
    bmi: float = weight / (height * height)

    if bmi < 18.5:
        print("Underweight")
    elif bmi >= 25:
        print("Overweight")
    else:
        print("Normal weight")

Und damit ist der BMI-Rechner fertig. Sicherlich ließe sich noch einiges verbessern. Was ist zum Beispiel, wenn der Benutzer keinen numerischen Wert eingibt? So ein Value Error würde dazu führen, dass das Programm mit einer Fehlermeldung abbricht. Es wäre also sinnvoll, eine Ausnahmebehandlung hinzuzufügen, eine Aufgabe, an der ihr euch versuchen könnet. Dieser Artikel zur Ausnahmebehandlung in Python mag dabei helfen.

Den Code zu diesem Projekt findet ihr auf Github. Dort veröffentliche ich von Zeit zu Zeit kleine Python-Projekte. Der Code kann mittels git geklont werden:

git clone https://github.com/niftycode/small-python-projects.git

Update: Im Github-Repository small-python-projects findet Ihr weitere Versionen dieses BMI-Rechners:

Außerdem wurde zu dem hier gezeigten Beispiel ein Test-Skript hinzugefügt (pytest).

Zuletzt aktualisiert am 18. Dezember 2023