Reputation: 45
def main():
name = input("What is your first name?: ")
name2 = input("What is your last name?: ")
kg = float(input("What is your weight in kilograms?: "))
meters = float(input("What is your height in meters?: "))
mass = float(kg)
height = float(meters)
Health(BMI, Ponderal, Rohrer)
print(name2+",",name,"(BMI:",BMI,",",\
"Ponderal Index:",Ponderal,",","Rohrer's Index:",Rohrer,",",")")
***It should return something along the lines of Last, First(BMI: 35.234, Ponderal Index: 16.5, Rohrer's Index: 114) Im in a intro to python class and its really late to contact anyone else for help. The whole purpose of this exercise is to create functions and call back to them.
Edit: Thanks a lot for the help guys, I know a lot of the questions on here are normally far more advanced, but the quick replies and the amount of helpful tips is greatly appreciated.
Upvotes: 1
Views: 200
Reputation: 28252
If a function returns something, then you should put it somewhere. For example, in a variable!
Here, change your functions:
def main():
name = input("What is your first name?: ")
name2 = input("What is your last name?: ")
mass = float(input("What is your weight in kilograms?: "))
height = float(input("What is your height in meters?: "))
#mass = float(kg) #not needed
#height = float(meters) #not needed
result = health(mass, height)
#printing based on the return value. result[0] is bmi, and so on.
print("%s, %s (BMI: %d, Ponderal Index: %d, Rohrer's Index: %d"%(name2,name,health[0],health[1],health[2]))
def bmi (mass, height):
result = mass / (height ** 2)
return result
def ponderal (mass, height):
result = mass / height ** 3
return result
def rohrer(mass, height):
result = (mass * 10000) / ((height * 100) ** 3)
return result
def health (mass, height):
#calling the functions
bmi = bmi(mass, height) #store the returned value to a variable
ponderal = ponderal(mass, height)
rohrer = rohrer(mass, height)
return [bmi,ponderal,rohrer] #return it as a list.
Result:
>>> ================================ RESTART ================================
>>>
What is your first name?: Akhyar
What is your last name?: Kamili
What is your weight in kilograms?: 50
What is your height in meters?: 1.7
Kamili, Akhyar (BMI: 17.301038062283737 , Ponderal Index: 10.177081213108082 , Rohrer's Index: 0.1017708121310808 , )
>>>
Some advice:
Your code will do better.
Upvotes: 1
Reputation: 3425
There are a lot of problems with your code; first off format it better make sure you have comments on your code (lines that start with #)
Also don't directly convert units from string to float. What if they enter something invalid handle exceptions.
Thirdly the way you format you output text is god awful it is extremely hard to read all the commas and paratheses.
Also the way you get the values you never set them to a variable you also use this health function which you do not need just call the values directly!
Also use sensical names for variables instead of name2 use first name etc
Your code should better look like this (note if this is for homework and you turn this in your professor will easily find it on stackoverflow; so don't)
# calculates the BMI of a person
def BMI (mass, height):
BMI = mass / (height ** 2)
return BMI
# calculates the Ponderal index of a person
def Ponderal (mass, height):
Ponderal = mass / height ** 3
return Ponderal
# calculates the Rohrer index of a person
def Rohrer (mass, height):
Rohrer = (mass * 10000) / ((height * 100) ** 3)
return Rohrer
# this isn't needed
def Health (BMI, Ponderal, Rohrer):
BMI (mass, height)
Ponderal (mass, height)
Rohrer (mass, height)
return Health
def main():
# get the names of people
first_name = input("What is your first name?: ")
last_name = input("What is your last name?: ")
# get their height and weight
kg = input("What is your weight in kilograms?: ")
meters = input("What is your height in meters?: ")
# convert mass and height to numbers
try:
mass = float(kg)
except ValueError:
print "Please enter a valid mass."
return
try:
height = float(meters)
except ValueError:
print "Please enter a valid height."
return
# call the BMI, Ponderal and Rohrer functions
# don't make the variable BMI as your function is also that name!
bmi_value = BMI(mass, height)
ponderal_value = Ponderal(mass, height)
rohrer_value = Rohrer(mass, height)
print( "%s, %s (BMI: %s, Ponderal Index: %s, Rohrer Index: %s)" % (last_name, first_name, bmi_value, ponderal_value, rohrer_value) )
# this print string is EXTREEMLY hard to read
# print(name2+",",name,"(BMI:",BMI,",", "Ponderal Index:",Ponderal,",","Rohrer's Index:",Rohrer,",",")")
# if we are running this script directly call main
if __name__ == "__main__":
main()
Upvotes: 1
Reputation: 59974
You're not calling the functions, you're only referencing them. For example:
Ponderal
# <function Ponderal at blah>
Compared to:
Ponderal()
# A number
Upvotes: 0