1
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,",",")")

***它应该返回类似于 Last, First(BMI:35.234,Ponderal 指数:16.5,Rohrer 指数:114)的内容。本练习的全部目的是创建函数并回调它们。

编辑:非常感谢大家的帮助,我知道这里的很多问题通常要高级得多,但是非常感谢快速回复和大量有用的提示。

4

3 回答 3

1

如果一个函数返回一些东西,那么你应该把它放在某个地方。例如,在变量中!

在这里,更改您的功能:

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.

结果:

>>> ================================ 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 , )
>>> 

一些忠告:

  1. 不要大写函数名!
  2. 不要像函数一样命名变量!

你的代码会做得更好。

于 2013-10-12T03:31:20.313 回答
1

你的代码有很多问题;首先格式化它最好确保你对你的代码有注释(以#开头的行)

也不要直接将单位从字符串转换为浮点数。如果他们输入一些无效的处理异常怎么办。

第三,你输出文本的格式太糟糕了,阅读所有的逗号和括号非常困难。

此外,您获取从未将它们设置为变量的值的方式也可以使用此健康功能,您不需要直接调用这些值!

还对变量使用有意义的名称而不是 name2 使用名字等

您的代码应该看起来像这样更好(请注意,如果这是用于家庭作业并且您将其交给您的教授将很容易在 stackoverflow 上找到它;所以不要)

# 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()
于 2013-10-12T03:33:29.277 回答
0

你不是在调用函数,你只是在引用它们。例如:

Ponderal
# <function Ponderal at blah>

相比:

Ponderal()
# A number
于 2013-10-12T03:18:31.177 回答