Body-Mass-Index mitsamt Geschlecht in Python

Will ich meinen BMI wissen, dann gibt es allerlei Websites da draußen. Mein Gewicht gebe ich ein, mein Alter, die Körperlänge und schon kommt da der Wert raus. Aber was ist mit der Berücksichtigung Mann oder Frau, das spielt dort keine Rolle. Sollte es aber. Darum hier die nachfolgende kleine Fingerübung, gemacht in Python auf der Mac Kommandozeile.

Aber vorweg und zum Spaßhaben die hier einebette Variante aus HTML mit eingebettetem CSS und JavaScript. Danach kommt der Python Code für command line.

Yogavus BMI- & Körperfettrechner

Der Body-Mass-Index wird berechnet als:









BMI, BFP, was?

Für das kleine Python-Programm dient ein Denkmuster, ein Formel, wie sie zurückgeht auf die Herren Paul Deurenberg, Jan. A. Weststrate und Jaap C. Seidell. Da gab es 1991 eine wissenschaftliche Studie mit Titel "Body mass index as a measure of body fatness: age- and sex-specific prediction formulas“ veröffentlich im British Journal of Nutrition, Band 65, Seiten 105–114.

Die Formel basiert auf Messungen an über 1200 Personen (Densitometrie zur Bestimmung der Körperzusammensetzung) und ist eine der am häufigsten zitierten Schätzformeln, um den Körperfettanteil aus BMI, Alter und Geschlecht abzuleiten. Sie gilt speziell für Erwachsene und ist eine praktische Erweiterung des reinen BMI, welcher seinerseits Geschlecht und Alter ignoriert.

Nun aber der Code, danach folgt die innewohnende mathematische Formel mit Erläuterung.

# Yogavus BMI

alter = int(input("Alter (ganze Zahl): "))
geschlecht = input("Geschlecht (M/F): ").upper()

if geschlecht == "M":
    s = 1
elif geschlecht == "F":
    s = 0
else:
    print("Bitte nur M oder F eingeben.")
    exit()

groesse = int(input("Größe in cm (ganze Zahl): "))
gewicht = int(input("Gewicht in kg (ganze Zahl): "))

bmi = gewicht / ((groesse / 100) ** 2)
bfp = 1.2 * bmi + 0.23 * alter - 10.8 * s - 5.4

print()
print("Dein BMI:", round(bmi, 2))
print("Geschätzter Körperfettanteil (BFP):", round(bfp, 2), "%")
print()
print("Ergebnis:")
print("BMI:", round(bmi, 2))
print("BFP:", round(bfp, 2), "%")

Die Mathematik dahinter

Variable
Bedeutung
Einheit
Hinweise
BFP
Körperfettanteil
%
Ergebnis in Prozent
BMI
Body-Mass-Index
kg/m²
Zwischenschritt
W
Gewicht
kg
Ganze Zahl
H
Größe
cm
Ganze Zahl
A
Alter
Jahre
Ganze Zahl
S
Geschlecht
1 = männlich, 0 = weiblich