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

2024-04-26 14:50:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个任务,创建一个代码,接收用户输入的姓名、体重和身高,然后返回一个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 体重指数:xxx

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


Tags: 函数inputxxxend姓名printbmienter
1条回答
网友
1楼 · 发布于 2024-04-26 14:50:28

好吧,有几件事你需要解决

  • 打印时,没有正确调用函数,python认为您试图将"BMI: "用作函数。调用BMI的方式类似于BMI(weight, height),在这里您将weight和height的值作为参数传入BMI返回一个float,因此在追加它之前需要将它转换为字符串。这些变化的结果是"BMI: "+ str(BMI(num1, num2))
  • BMI函数的定义中,您需要将weight和height作为如下参数传递: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)))

相关问题 更多 >