Python :: Aufgabe #97
5 Lösungen
Digitale Kalorienüberwachung
Anfänger - Python
von Energy
- 09.03.2016 um 14:25 Uhr
Erstelle ein Programm, das dich nach deinen gegessenen Nahrungsmitteln und deren Kalorien fragt. Diese Infos sollen in einem Dictionary (ggf. auch Liste oder Array) gespeichert werden. Nach jeder Nahrungsmitteleingabe soll gefragt werden, ob du noch weitere Nahrungsmittel gegessen hast.
Wurden keine weiteren Nahrungsmittel verzehrt, soll ausgerechnet werden, wie viele Kalorien du an diesem Tag aufgenommen hast.
Zusatz: Bei 60 Minuten schwimmen verbrennt man ungefähr 400 Karolinen. 30 Minuten spazieren verbrennt 50 Kalorien. Wie lange müsste man spazieren oder schwimmen, um die heute zugenommenen Kalorien wieder zu verbrennen? Berechne diese Werte und gebe sie mit den Verbrannten Kalorien aus.
Wurden keine weiteren Nahrungsmittel verzehrt, soll ausgerechnet werden, wie viele Kalorien du an diesem Tag aufgenommen hast.
Zusatz: Bei 60 Minuten schwimmen verbrennt man ungefähr 400 Karolinen. 30 Minuten spazieren verbrennt 50 Kalorien. Wie lange müsste man spazieren oder schwimmen, um die heute zugenommenen Kalorien wieder zu verbrennen? Berechne diese Werte und gebe sie mit den Verbrannten Kalorien aus.
Lösungen:
Python-Code
liste = [] def mehr(): liste.append(input("Was hast du noch gegessen?\n")) while True: try: liste.append(int(input("Wie viele Kalorien hat es?\n"))) print() break except: print("Bitte nur ganze Zahlen!\n") continue repeat() def repeat(): weiter = str(input("Hast du sonst noch etwas gegessen? (y/n)\n")) print() if weiter == 'Y' or weiter == 'y': mehr() else: ende() def ende(): kal = 0 for i in range(1, len(liste), 2): kal += int(liste[i]) print("Du hast heute", kal, "Kalorien zu dir genommen.") print("Du musst etwa", int(30*kal/50), "Mintuen Spazieren, oder", int(60*kal/400), "Minuten Schwimmen.") liste.append(input("Was hast du heute gegessen?\n")) while True: try: liste.append(int(input("Wie viele Kalorien hat es?\n"))) print() break except: print("Bitte nur ganze Zahlen!\n") continue repeat()
Python-Code
#!/usr/bin/python3 import math CPM_SWIMMING = 400./60. CPM_WALKING = 50./30. def tofloat(s): try: return float(s) except ValueError: return -1. foods = {} food = input("Was hast du heute gegessen : ") while True: incal = input("Wie viele Kalorien hat es : ") calories = tofloat(incal) if calories >= 0: foods[food] = calories else: print("Die Kalorienzahl ist nicht numerisch!") continue answer = input("Hast du noch etwas gegessen? ").lower() if answer[0] == 'n': break food = input("Was hast du heute noch gegessen: ") sum_calories = sum(foods.values()) time_swimming = math.ceil(sum_calories/CPM_SWIMMING) time_walking = math.ceil(sum_calories/CPM_WALKING) print("\nDu hast {:.0f} Kalorien zu dir genommen.".format(sum_calories)) print("Du musst {:.0f} Minuten spazieren oder {:.0f} Minuten schwimmen.".format(time_walking, time_swimming))
Python-Code
# Digitale Kalorienueberwachung cal_liste = [] def eingabe(): cal_eingabe = [] print('Was hast Du heute gegessen?') cal_eingabe.append(input()) cal_eingabe.append(int(input('Wieviele Kalorien: '))) cal_liste.append(cal_eingabe) def auswertung(): cal_gesamt = 0 for i in range(len(cal_liste)): cal_gesamt += cal_liste[i][1] print('Du hast heute',cal_gesamt,'Kalorien zu Dir genommen.') print('Du musst entweder',((cal_gesamt/100)*60), 'Minuten spazieren oder',((cal_gesamt/400)*60),'Minuten schwimmen') while True: eingabe() entscheidung = input('Hast Du noch etwas gegessen (j/n)') if entscheidung == ('n' or 'N'): break auswertung()
Python-Code
# -*- coding: utf-8 -*- food_to_calories = {} x = 0 summe = 0 while x == 0: y = 0 lebensmittel = raw_input("\nNahrungsmittel: ") while y == 0: try: kalorien = input("Enthaltene Kalorien: ") y = 1 except: print "Bitte einen numerischen Wert eingeben!\n" food_to_calories[lebensmittel] = kalorien summe = summe + food_to_calories.get(lebensmittel) fortfahren = raw_input("\nHast du noch mehr gegessen? (j / n) ") if fortfahren == "n": x = 1 print "\nDu hast heute " + str(summe) + " Kalorien zu dir genommen. \nGehe " + \ str(summe * 60 / 400) + " Minuten schwimmen oder " + str(summe * 30 / 50) + \ " Minuten spazieren, um die Kalorien zu verbrennen."
Python-Code
def eingabe(): global gerichte gerichte = [] global kcal kcal = [] t = 1 while t == 1: gericht = input("Was haben Sie gegessen? ") kal = int(input("Wieviele kcal hatte es? ")) gerichte.append(gericht) kcal.append(kal) nochwas = input("Haben sie noch etwas gegessen? (ja/nein) ") if nochwas == "nein": t = 0 else: None def list_to_dict(gerichte, kcal): global gerichte_kcal_dict gerichte_kcal = list(zip(gerichte, kcal)) gerichte_kcal_dict = dict(gerichte_kcal) def bilanz_berechnen(gerichte_kcal_dict): global gesamtbilanz gesamtbilanz = 0 for k in gerichte_kcal_dict.values(): gesamtbilanz += k def kcal_verbrennen(gesamtbilanz): min_schwimmen = 6.6666666667 min_spazieren = 1.6666666667 global schwimmen global spazieren schwimmen = gesamtbilanz // min_schwimmen spazieren = gesamtbilanz // min_schwimmen def ausgabe(gerichte_kcal_dict, gesamtbilanz, schwimmen, spazieren): print("Das haben Sie heute gegessen: " + str(gerichte_kcal_dict)) bilanz_wissen = input("Wollen Sie Ihre Gesamtbilanz an Kcal wissen? (J/N): ") if bilanz_wissen == "j" or bilanz_wissen == "J": print("Ihre Gesamtbilanz beträgt: " + str(gesamtbilanz) + " Kcal.") verbrennen_wissen = input("Wollen Sie wissen, wie Sie die Kcal verbrennen können? (J/N): ") if verbrennen_wissen == "j" or verbrennen_wissen == "J": t = 1 while t == 1: schwimmen_oder_spazieren = input("Durch Schwimmen, oder durch Spazieren? (schwimmen/spazieren): ") if schwimmen_oder_spazieren == "schwimmen" or schwimmen_oder_spazieren == "Schwimmen": print(str(schwimmen) + " Minuten schwimmen") t = 0 elif schwimmen_oder_spazieren == "spazieren" or schwimmen_oder_spazieren == "Spazieren": print(str(spazieren) + " Minuten spazieren") t = 0 else: print("Fehler: Nur [schwimmen] oder [spazieren] möglich") eingabe() list_to_dict(gerichte, kcal) bilanz_berechnen(gerichte_kcal_dict) kcal_verbrennen(gesamtbilanz) ausgabe(gerichte_kcal_dict, gesamtbilanz, schwimmen, spazieren)