如何在此循环中获得BMI的返回值?

时间:2019-06-20 02:49:59

标签: python python-3.x

我正在做一个分配,以创建一个代码,该代码接收来自用户的名称,体重和身高的输入,然后返回BMI值,然后循环返回以询问其他名称。我似乎无法让我的BMI函数返回输出。

def BMI(BMI):
    num1, num2 = weight, height
    BMI = (num1 * 706)/(num2^2)
    return BMI
user = str
end = "x"
while user != end:
    print()
    user = input("Please enter player name or type 'X' to quit: ")
    if user == end:
        print("Report Complete")
        break
    else:
        num1 = (float(input("Please enter weight: ")))
        num2 = (float(input("Please enter height: ")))
    if num1 >= 1:
        print("BMI: "(BMI))

我在运行该函数时收到此错误:“”。

我正在寻找符合以下条件的输入

请输入玩家名称或按“ X”退出:xxx 请输入重量:xxx 请输入身高:xxx BMI:xxx

请输入玩家名称或按“ X”退出:

1 个答案:

答案 0 :(得分:2)

好的,因此您需要修复一些问题才能使其正常工作。

  • 打印时,您没有正确调用该函数,而python认为您正在尝试使用"BMI: "作为函数。您要如何调用BMI就像BMI(weight, height)一样,在其中您将weight和height的值作为参数进行传递。 BMI返回一个浮点数,因此您需要在附加之前将其转换为字符串。这些更改的结果是"BMI: "+ str(BMI(num1, num2))
  • BMI函数的定义中,您需要将权重和高度作为参数传递,例如:def BMI(weight, height):。这将允许您在函数主体中同时使用weightheight
  • Python中的^并不意味着功率,而是按位异或。您想像这样使用**运算符:BMI = (num1 * 706)/(num2**2)

进行了这些更改之后,您应该以如下形式结束:

def BMI(weight, height):
    num1, num2 = weight, height
    BMI = (num1 * 706.0)/(num2**2)
    return BMI
user = str
end = "x"
while user != end:
    print()
    user = input("Please enter player name or type 'X' to quit: ")
    if user == end:
        print("Report Complete")
        break
    else:
        num1 = (float(input("Please enter weight: ")))
        num2 = (float(input("Please enter height: ")))
    if num1 >= 1:
        print("BMI: " + str(BMI(num1, num2)))