python calkulator BMI

1

Witam pisze kalkulator BMI wraz z okienkami z easygui na razie mam coś takiego i to działa, lecz chce ten kalkulator zmodyfikować i dodać wzór na zawartość tłuszczu w organizmie człowieka. Lecz nie wie jak wczytać zmienną płci i wieki z wyboru easygui. Chodzi o to gdy poprosi o wpisanie płci i wieku program wczytał to jako zmienna.

from easygui import *
# wprowadzanie danych
msg = "Sprawdz czy masz nadwage!?"
title = "Kalkulator Body Mass Index"
fieldNames = ["Podaj swoją wage [kg]","Podaj swój wzrost [cm]", "Podaj swoj wiek", "Podaj swoją płeć [M = Mężczyzna] [K = Kobieta]"]
fieldValues = []
fieldValues = multenterbox(msg,title, fieldNames)
# obliczanie wzoru BMI oraz zawartosci tluszczu
BMI = float(fieldValues[0])/(float(fieldValues[1])*float(fieldValues[1])/10000)
BMI = round(BMI*10)/10
if plec='K' = 0
else plec = 'M' = 1
TL = float(1,2*BMI)+0,23*wiek-(10,8*plec)-5,4
# wyprowadzanie wyniku
if BMI<18.5:
	msg1 = "Twoje BMI wynosi, zawartość tłuszczu wynosi."+ str(BMI) TL + "- Jesteś zbyt chudy/a jak na swój wzrost."  
	msgbox(msg1, title, ok_button="OK")
elif BMI>25:
	msg1 = "Twoje BMI wynosi, zawartość tłuszczu wynosi. "+ str(BMI) TL + ", Jak na swój wzrost to powinieneś/powinnas schudnoć."
	msgbox(msg1, title, ok_button="OK")
else:
    msg1 = "Twoje BMI wynosi, zawartość tłuszczu wynosi. "+ str(BMI) TL + ", Z twoją wago jest wszystko w porządku."
    msgbox(msg1, title, ok_button="OK")
0

Treść bez sensu bo nie można czegoś wczytać jako stałą, zawsze wczytasz jako zmienną.

1

Nie jestem dobry z programowania, lecz postawiłem sobie cel ze coś zrobię, wszystko co umiem to się na uczyłem sam z internetu. Wiec jak byś mógł mnie na kierować co i jak ?

3

AnDrIx, po cholerę Ci ten python? Przecież Tobie należy się Nobel z medycyny za odkrycie wzoru na zawartość tłuszczu w organizmie.

2

Mam prośbę jeżeli twój post niczego nie wnosi a wręcz można z tego wyczytać ze mnie obrażasz to dlaczego się wypowiadasz ?

wzór mam z tej strony
link http://diety2000.webpark.pl/kinistrona/licznik2.htm

2

Ja Ciebie nie obrażam, po prostu mi imponujesz. A obrażać czy kompromitować możesz co najwyżej sam siebie.

Nie można obliczyć zawartości tłuszczu w organizmie, to jest coś, co jedynie można zmierzyć bądź szacować na podstawie pomiarów. Są np. takie metody jak ważenie hydrostatyczne, pomiar impedancji bioelektrycznej czy bardzo prosty pomiar obwodu otłuszczonych części ciała.

Mam nadzieję, że ten post również zostanie zminusowany przez ignorantów intelektualnych.

1

Problem polega na tym że nie mam pojęcia (i chyba nie tylko ja) o co autorowi chodzi...

1

zagadka:

  • ile tłuszczu ma Pudzian;
  • ile tłuszczu ma przyrośnięty to krzesła geek-nolife o masie Pudziana żyjący o pizzy, coli i "randkach" na ircu?
0

To może od początku napisałem programik który liczy BMI, oraz uzywa do tego easygui jako klawiszy graficznych. Chodzi mi o to ze chce do tego wstawić ten wzór,

Wzór na zawartość procentową tłuszczu w twoim organizmie:
1,2 x BMI + 0,23 x wiek - (10,8 x płeć) - 5,4 = % tłuszczu
gdzie płeć M=1 pkt; K=0 pkt

lecz tu jest problem bo nie wiem jak to ugryźć. Gdzie co podstawić, jak by to zgrać z easygui.

from easygui import *
# wprowadzanie danych
msg = "Sprawdz czy masz nadwage!?"
title = "Kalkulator Body Mass Index"
fieldNames = ["Podaj swoją wage [kg]","Podaj swój wzrost [cm]"]
fieldValues = []
fieldValues = multenterbox(msg,title, fieldNames)
# obliczanie wzoru BMI oraz zawartosci tluszczu
BMI = float(fieldValues[0])/(float(fieldValues[1])*float(fieldValues[1])/10000)
BMI = round(BMI*10)/10
# wyprowadzanie wyniku
if BMI<18.5:
	msg1 = "Twoje BMI wynosi, zawartość tłuszczu wynosi."+ str(BMI) + "- Jesteś zbyt chudy/a jak na swój wzrost."  
	msgbox(msg1, title, ok_button="OK")
elif BMI>25:
	msg1 = "Twoje BMI wynosi, zawartość tłuszczu wynosi. "+ str(BMI) + ", Jak na swój wzrost to powinieneś/powinnas schudnoć."
	msgbox(msg1, title, ok_button="OK")
else:
    msg1 = "Twoje BMI wynosi, zawartość tłuszczu wynosi. "+ str(BMI) + ", Z twoją wago jest wszystko w porządku."
    msgbox(msg1, title, ok_button="OK")
0

po wielu wypoconych minutach mam na razie coś takiego, lecz nadal nie działa to tak jak chce ;/

 from easygui import *
# wprowadzanie danych
msg = "Sprawdz czy masz nadwage!?"
title = "Kalkulator Body Mass Index"
fieldNames = ["Podaj swoją wage [kg]","Podaj swój wzrost [cm]","Podaj swoj wiek", "Podaj swoją płeć [M = Mężczyzna] [K = Kobieta]"
fieldValues = []
fieldValues = multenterbox(msg,title, fieldNames)
#
waga = fieldValues[0]
wzrost = fieldValues[1]
wiek = fieldValues[2]
plec = fieldValues[3]
if fieldValues[3]=="k":
 plec = 1
else:
 plec = 0
# obliczanie wzoru BMI oraz zawartosci tluszczu
BMI = float(waga)/(float(wzrost)*float(wzrost)/10000)
BMI = round(BMI*10)/10
FAT = (1.2*BMI) + (0.23*wiek) - (10.8*plec) - 5.4

# wyprowadzanie wyniku
if BMI<18.5:
msg1 = "Twoje BMI wynosi:" + str(BMI)+ ", zawartość tłuszczu wynosi:" + str(FAT)+ "- Jesteś zbyt chudy/a jak na swój wzrost."
msgbox(msg1, title, ok_button="OK")
elif BMI>25:
msg1 = "Twoje BMI wynosi" + str(BMI)+ ", zawartość tłuszczu wynosi:" + str(FAT)+" Jak na swój wzrost to powinieneś/powinnas schudnoć."
msgbox(msg1, title, ok_button="OK")
else:
msg1 = "Twoje BMI wynosi" + str(BMI)+ ", zawartość tłuszczu wynosi. " + str(FAT)+", Z twoją wago jest wszystko w porządku."
msgbox(msg1, title, ok_button="OK")
0

Czyli jak dziala ostatni kod i co robi zle ?

0

0

ok wszystko śmiga lecz jak obejść by nie krzyczało mi ze ta tabela o tej nazwie jest zajęta a nie chce jej dropowac co chwile.

PS: żeby nie było najpierw przeszukuje google, a potem pytam :)

cur.execute("CREATE TABLE Kobieta (Wzrost varchar, Wiek varchar, Plec varchar, BMI varchar, zawartosc_tluszczu varchar);")
psycopg2.ProgrammingError: relation "kobieta" already exists

EDIT:
Oraz mam pytanie, jak wstawić podaną zmienna (typu wzrost, wagę, wiek, pleć, wyliczone BMI oraz zawartość tłuszczu) w tabele ?
Chodzi o to ze gdy ktoś poda te dane i na końcu potwierdzi że chce wstawić swoje dane do naszej bazy by wstawiło te że podane dane w tabele.
Jest takie coś możliwe ? Oraz w komentarzach zadałem dodatkowe nurtujące mnie pytania.

aktualnie Kod wygląda tak:

#-*- coding: utf-8 -*-
#importowanie potrzebnych bibliotek
from easygui import *
import psycopg2
import sys
#praca na bazie danych
try:
	conn = psycopg2.connect("dbname='****' user='****' host='****' password='****'");
except:
	msg_error = "Błąd - Nie moge polaczyć sie z bazą!!"
	title_error = "Błąd - Nie moge polaczyć sie z bazą!!"
	msgbox(msg_error, title_error, ok_button="OK") 
cur = conn.cursor()
cur.execute("CREATE TABLE BMI (Wzrost varchar NOT NULL, Wiek varchar NOT NULL, Plec varchar NOT NULL, BMI varchar NOT NULL, Zawartosc_Tluszczu varchar NOT NULL);")
conn.commit()
#wybor programu lub wczytanie danych z bazy
msg_choice = "Mam uruchomić program czy wczytać dane z bazy online?"
title_choice = "Co chcesz uruchomić ?"
choices_choice = ["Program", "Baza"]
choice = choicebox(msg_choice, title_choice, choices_choice)
#baza
#program
# TĄ CZĘŚĆ KODU(W DÓŁ) CHCIAŁ BYM ZAPISAĆ JAKO FUNKCJE KTÓRĄ BEDE CHCIAŁ WYWOŁAĆ WYŻEJ W WYBORZE CZY ODPALIĆ PROGRAM CZY WCZYTAĆ Z BAZY LECZ NIE WIEM JAK TO ZROBIĆ.
# PODOBNIE WYŻEJ BEDE CHIAŁ ZDEFINIOWAC FUNKCJE BAZA I TAK SAMO WYWOLAC JA WYZEJ PRZY WYBOZE.
msg = "Sprawdz swoje BMI oraz zawartość tkanki tłuszczowej"
title = "Kalkulator BMI (Body Mass Index) oraz zawartość tkanki tłuszczowej"
fieldNames = ["Podaj swoją wagę [kg]", "Podaj swój wzrost [cm]", "Podaj swój wiek", "Podaj swoja pleć [M = Mężczyzna] [K = Kobieta]"]
fieldValues = []
fieldValues = multenterbox(msg, title, fieldNames)
#wczytywanie dancyh
weight = float(fieldValues[0])
growth = float(fieldValues[1])
age = float(fieldValues[2])
sex = fieldValues[3]
if fieldValues[3]=="k":
	sex = 1
else:  
	sex = 0
#podstawianie pod wzór
BMI = float(weight)/(float(growth)*float(growth)/10000)
BMI = round(BMI*10)/10
FAT = (1.2*BMI) + (0.23*age) - (10.8*sex) - 5.4
#wyprowadzanie wyniku
if BMI < 18.5:
	msg1 = "Twoje BMI wynosi: " + str(BMI)+ ", zawartość tłuszczu wynosi: " + str(FAT)+ " % Jesteś zbyt chudy/a jak na swój wzrost.								 Czy chesz wczytać swój wynik do naszej bazy ?"
	choices = ["Tak", "Nie"]
	choice = choicebox(msg1, title, choices)
		#if choices =="Tak"
		#i tu nie wiem czy dobrze robie ? i jak w VALUES zdefiniować te zmienne
		#cur.execute("INSERT INTO BMI (Wzrost, Wiek, Plec, BMI, Zawartosc_Tluszczu) VALUES(%s, %s)"
		#else:
		#	sys.exit(0)		
elif BMI>25:	
	msg1 = "Twoje BMI wynosi: " + str(BMI)+ ", zawartość tłuszczu wynosi: " + str(FAT)+ "% Jak na swój wzrost to powinieneś/powinnaś schudnąć. 							Czy chesz wczytać swój wynik do naszej bazy ?"
	choices = ["Tak", "Nie"]
	choice = choicebox(msg1, title, choices)
else:
	msg1 = "Twoje BMI wynosi: " + str(BMI)+ ", zawartość tłuszczu wynosi: " + str(FAT)+ "% Z twoją wago jest wszystko w porządku. 							Czy chesz wczytać swój wynik do naszej bazy ?"
	choices = ["Tak", "Nie"]
	choice = choicebox(msg1, title, choices)
0

jakiś pomysł jak bym mógł to zrobić?

PS: nie chodzi mi o to by ktoś mi napisał no bo i po co, lecz by nakierował co robię źle :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1