Python :: Aufgabe #197
8 Lösungen
Body-Mass-Index (BMI)
Anfänger - Python
von hollst
- 20.11.2018 um 18:23 Uhr
Der BMI ist eine (umstrittene) Kenngröße zur Ermittlung des eigenen Über-/Untergewichtszustandes:
BMI = Körpermasse (kg) / Körpergröße zum Quadrat (m**2).
Er wird wie folgt interpretiert:
Starkes Untergewicht < 16
Mäßiges Untergewicht 16 – < 17
Leichtes Untergewicht 17 – < 18,5
Normalgewicht 18,5 – < 25
Präadipositas 25 – < 30
Adipositas Grad I 30 – < 35
Adipositas Grad II 35 – < 40
Adipositas Grad III ≥ 40
Man schreibe ein Programm, das die zwei Basisdaten (Körpermasse und Körpergröße) entgegennimmt und den
Zustand (Starkes Untergewicht, Mäßiges Untergewicht ... Adipositas Grad III) als Ergebnis mitteilt.
Viel Spaß!
BMI = Körpermasse (kg) / Körpergröße zum Quadrat (m**2).
Er wird wie folgt interpretiert:
Starkes Untergewicht < 16
Mäßiges Untergewicht 16 – < 17
Leichtes Untergewicht 17 – < 18,5
Normalgewicht 18,5 – < 25
Präadipositas 25 – < 30
Adipositas Grad I 30 – < 35
Adipositas Grad II 35 – < 40
Adipositas Grad III ≥ 40
Man schreibe ein Programm, das die zwei Basisdaten (Körpermasse und Körpergröße) entgegennimmt und den
Zustand (Starkes Untergewicht, Mäßiges Untergewicht ... Adipositas Grad III) als Ergebnis mitteilt.
Viel Spaß!
Lösungen:
gewicht = input("Gewicht in kg: ")
groesse = input("Größe in cm: ")
bmi = float(gewicht)/((float(groesse)/100)**2)
if (bmi < 16):
print("BMI von ", round(bmi,1), "-> Starkes Untergewicht")
elif (bmi >= 16 and bmi < 17):
print("BMI von ", round(bmi,1), "-> Mäßiges Untergewicht")
elif (bmi >= 17 and bmi < 18.5):
print("BMI von ", round(bmi,1), "-> Leichtes Untergewicht")
elif (bmi >= 18.5 and bmi < 25):
print("BMI von ", round(bmi,1), "-> Normalgewicht")
elif (bmi >= 25 and bmi < 30):
print("BMI von ", round(bmi,1), "-> Präadipositas")
elif (bmi >= 30 and bmi < 35):
print("BMI von ", round(bmi,1), "-> Adipositas Grad I")
elif (bmi >= 35 and bmi < 40):
print("BMI von ", round(bmi,1), "-> Adipositas Grad II")
else:
print("BMI von ", round(bmi,1), "-> Adipositas Grad III")
#Rechner zur Bestimmung des BMI
#Eingabe über eine GUI
from tkinter import*
#----------Funktionen---------
def Berechnung ():
global Größe
global Gewicht
BMI= 0
Ausgabefeld_1.delete(1.0, END)
Eingabe2 = Eingabe_Größe.get()
Größe = int(Eingabe2)/100
Eingabe = Eingabe_Gewicht.get()
Gewicht = int(Eingabe)
BMI1 = Gewicht /(Größe*Größe)
BMI1 = round(BMI1, 2)
BMI = str(BMI1)
if BMI1 < 16:
Hinweis = ", stark untergewichtig"
if BMI1 >= 16 and BMI1 <17:
Hinweis = ", mäßig untergewichtig"
if BMI1 >=17 and BMI1 <18.5:
Hinweis = ", leicht untergewichtig"
if BMI1 >= 18.5 and BMI1 < 25:
Hinweis = ", Normalgewicht"
if BMI1 >= 25 and BMI1 < 30:
Hinweis =", Präadipositas"
if BMI1 >= 30 and BMI1 < 35:
Hinweis = ", Adipositas Grad I"
if BMI1 >= 35 and BMI1 <40:
Hinweis = ", Adipositas Grad II"
if BMI1 >= 40:
Hinweis = ", Adipositas Grad III"
Ausgabe = str(BMI + Hinweis)
Ausgabefeld_1.insert(END, (BMI + Hinweis))
def Ende():
BMI_Rechner.destroy()
#---------Definition der GUI---------
BMI_Rechner = Tk()
BMI_Rechner.title("BMI Rechner")
Überschrift=Label(BMI_Rechner, text =" Mein BMI", font = "Times 10")
Überschrift.grid(column = "2", row ="1")
Abstandshalter1 = Label(BMI_Rechner, text =" ")
Abstandshalter1.grid(column = "1", row ="2")
#Eingabe Gewicht, Variable = Gewicht
Hinweis_Eingabe1 = Label(BMI_Rechner, text ="Bitte Gewicht eingeben:")
Hinweis_Eingabe1.grid(column = "1", row = "3")
Eingabe_Gewicht = Entry(BMI_Rechner)
Eingabe_Gewicht.insert(0, "0")
Eingabe_Gewicht.grid(column= 1, row=4)
Hinweis_Einheit = Label(BMI_Rechner, text ="Kg").grid(column = 2, row=4, sticky=W)
#Eingabe Größe, Variable = Größe
Hinweis_Eingabe2 = Label(BMI_Rechner, text ="Bitte Größe eingeben:")
Hinweis_Eingabe2.grid(column = "3", row = "3")
Eingabe_Größe = Entry(BMI_Rechner)
Eingabe_Größe.insert(0, "0")
Eingabe_Größe.grid(column= "3", row="4")
Hinweis_Einheit = Label(BMI_Rechner, text ="cm").grid(column = 5, row=4, sticky=W)
Abstandshalter2 = Label(BMI_Rechner, text =" ")
Abstandshalter2.grid(column = "1", row ="5")
#Berechen und Ausgabe des Ergebnisses in der GUI
Berechnen=Button(BMI_Rechner, text="Berechnen", command = Berechnung)
Berechnen.grid(column = "2", row = "6")
Abstandshalter2 = Label(BMI_Rechner, text =" ")
Abstandshalter2.grid(column = "1", row ="7")
Hinweisfeld_1 = Label(BMI_Rechner, text ="Dein BMI ist:", font = "Times 10")
Hinweisfeld_1.grid(column=2, row =8)
Ausgabefeld_1 = Text(BMI_Rechner, height ="1", width ="30")
Ausgabefeld_1.grid(column = 2, row=9)
Ende_Button = Button(BMI_Rechner, text ="ENDE", command = Ende)
Ende_Button.grid(column = 5, row = 11)
BMI_Rechner.mainloop()
#Programm zur Berechnung des BMI Wertes und Ausgabe des gesundheitlichen Zustandes
#Eingabe
gr=input("Gebe deine Körpergröße in M ein: ")
gw=input("Gebe dein Gewicht in KG ein: ")
#Verarbeitung
def rechnen(gw,gr):
bmi=round(float(gw)/(float(gr)**2),2)
status = auswertung(bmi)
print("Du hast einen BMI von "+ str(bmi)+ " dass nennt man: " + status)
def auswertung(x):
if x < 16:
return "Starkes Untergewicht"
elif x >= 16 and x <=17:
return "Mäßiges Untergewicht"
elif x >17 and x < 18.5:
return "Leichtes Untergewicht"
elif x <=18.5 and x <=25:
return "Nandmalgewicht"
elif x <25 and x <=30:
return "Präadipositas"
elif x <30 and x <=35:
return "Adipositas Grad I"
elif x >35 and x <=40:
return "Adipositas Grad II"
elif x <40:
return "Adipositas Grad III"
else:
return "Level Gott"
#Ausgabe
rechnen(gw,gr)
#Tipps wie ich die zwei while-Schleifen umgehen kann, also eine n-fache Eingabeaufforderung, mit unterschiedlichen Texten natürlich?
while True:
print("Bitte geben Sie Ihr Körpergewicht in Kg ein:")
try:
gewicht = float(input())
except:
print("Ungültige Eingabe!")
continue
break
while True:
print("Geben Sie nun ihre Körpergröße an:" )
try:
groesse = float(input())
except:
print("Ungültige Eingabe!")
continue
break
BMI = gewicht / (groesse**2)
if BMI < 16:
Ergebnis = "Starkes Untergewicht"
elif BMI >= 16 and BMI < 17:
Ergebnis = "Mäßiges Untergewicht"
elif BMI >= 17 and BMI <18.5:
Ergebnis = "Leichtes Untergewicht"
elif BMI >= 25 and BMI < 30:
Ergebnis = "Präadipositas"
elif BMI >= 30 and BMI < 35:
Ergebnis = "Adipositas Grad I"
elif BMI >= 35 and BMI < 40:
Ergebnis = "Adipositas Grad II"
elif BMI > 40:
Ergebnis = "Adipositas Grad III"
else:
Ergebnis = "Normalgewicht"
print(Ergebnis,BMI)
weight = (int(input("Dein Gewicht: ")))
height = (float(input("Deine roesse in cm: ")))
bmi = weight / ((height / 100)**2)
if bmi < 16:
bmistatus = "Starkes Untergewicht"
elif (bmi >= 16) and (bmi < 17):
bmistatus = "Maesiges Untergewicht"
elif (bmi >= 17) and (bmi < 18.5):
bmistatus = "Leichtes Untergewicht "
elif (bmi >= 18.5) and (bmi < 25):
bmistatus = "Normalgewicht "
elif (bmi >= 25) and (bmi < 30):
bmistatus = "Praeadipositas "
elif (bmi >= 30) and (bmi < 35):
bmistatus = "Adipositas Grad I "
elif (bmi >= 35) and (bmi < 40):
bmistatus = "Adipositas Grad II "
elif (bmi >= 40):
bmistatus = "Adipositas Grad III "
print("du hast ", bmistatus)
while True:
# Eingabe
print("Hast du dein Idealgewicht?")
masse = float(input ("Gewicht in kg: "))
grösse = float(input ("Grösse in m: "))
# Verarbeitung
bmi = masse/grösse**2
untergrenze = round((21*grösse**2), 1)
obergrenze = round((23*grösse**2), 1)
# Ausgabe
print (" Dein Body-Mass-Index beträgt:", round(bmi, 1))
if bmi < 15:
print(" Du bist beinahe verhungert.")
elif bmi <= 18.5:
print(" Du hast Untergewicht.")
elif bmi <= 21:
print(" Du bist mager.")
elif bmi <= 23:
print(" Du hast Idealgewicht.")
elif bmi <= 25:
print(" Du hast Normalgewicht.")
elif bmi <= 30:
print(" Du hast Übergewicht.")
elif bmi <= 35:
print(" Fettling, denk doch an all die hungernden Menschen! (Adipositas I)")
elif bmi <= 40:
print(" Du fette Sau, weisst du wieviel Ackerfläche du verbrauchst? (Adipositas II)")
elif bmi <= 45:
print(" BRAVO! Bald hast du es ins Guinness Book der Rekorde geschafft. (Adipositas III)")
else: print(" Du bist völlig überfressen, d.h. du hast Adipositas III+")
print (" Dein Idealgewicht ist zwischen", untergrenze, "und", obergrenze, "kg.")
print ()print('#### BMI Rechner ####')
# Definierte Ausgaben
ug1 = 'Starkes Untergewicht'
ug2 = 'Maessiges Untergewicht'
ug3 = 'Leichtes Untergewicht'
normal = 'Normalgewicht'
adi1 = 'Prädipositas'
adi2 = 'Adipositas Grad 1'
adi3 = 'Adipositas Grad 2'
adi4 = 'Adipositas Grad 3'
#BMI Berechnung
daten1 = float(input('Wie hoch ist Ihr Koerpergewicht: '))
daten2 = float(input('Wie gross sind Sie: '))
gesamtdaten = daten1 / (daten2/100)**2
print('\nIhr BMI ist:', "{0:.2f}".format(gesamtdaten))
#Ausabebloecke
if gesamtdaten < 16:
print('Sie sind im Bereich:', ug1)
elif gesamtdaten < 17:
print('Sie sind im Bereich:', ug2)
elif gesamtdaten < 18.5:
print('Sie sind im Bereich:', ug3)
elif gesamtdaten < 25:
print('Sie sind im Bereich:', normal)
elif gesamtdaten < 30:
print('Sie sind im Bereich:', adi1)
elif gesamtdaten < 35:
print('Sie sind im Bereich:', adi2)
elif gesamtdaten == 40:
print('Sie sind im Bereich:', adi3)# BMI-Rechner
kg = int(input("Gib dein Gewicht (in kg) ein: "))
groeße = int(input("Gib deine Größe (in cm) an: "))
bmi = round((kg / groeße**2) * 10000, 2)
if bmi < 16:
print("Sie haben starkes Untergewicht!")
elif bmi <= 16 and bmi < 17:
print("Sie haben mäßiges Untergewicht!")
elif bmi <= 17 and bmi < 18.5:
print("Sie haben leichtes Untergewicht!")
elif bmi <= 18.5 and bmi < 25:
print("Sie haben Normalgewicht!")
elif bmi <= 25 and bmi < 30:
print("Sie haben Präadipositas!")
elif bmi <= 30 and bmi < 35:
print("Sie haben Adipositas Grad I!")
elif bmi <= 35 and bmi < 40:
print("Sie haben Adipositas Grad II!")
elif bmi > 40:
print("Sie haben Adipositas Grad III!")