如何修复我的代码来计算Python的Body Mass Index?

时间:2016-03-14 20:04:08

标签: python python-3.x

我正在使用Python 3.5.1,我需要使用公式703 * weight / height ^ 2制作一个BMI计算器,输入我的身高和体重后,我得到“TypeError:不能乘以序列非'int类型'str'“

我真的不知道如何解决它。这是我的代码。

def calculateBMI():
    weight = input("Please enter weight in pounds: ")
    height = input("Please enter height in inches: ")

    return weight * ((703.0) / (height * height))

bmi = calculateBMI()

print ("""Your BMI is""", str(bmi))

if bmi < 18.5:
    print("You are underweight.")
elif bmi > 25:
    print("You are overweight.")
else:
    print ("You are of optimal weight.")

2 个答案:

答案 0 :(得分:4)

您的计划中有三个错误:

  • 由于您使用的是Python3,因此需要使用input(),而不是raw_input()来阅读用户的体重和身高。

  • 您需要使用int()float()将用户的数据转换为数字类型。

  • 您的缩进不正确。

这是一个有效的程序:

def calculateBMI():
    weight = int(input("Please enter weight: "))
    height = int(input("Please enter height: "))

    return weight * ((703.0) / (height * height))
bmi = calculateBMI()

print ("""Your BMI is""", str(bmi))

if bmi < 18.5:
    print("You are underweight.")
elif bmi > 25:
    print("You are overweight.")
else:
    print ("You are of optimal weight.")

答案 1 :(得分:0)

在我帮忙之前,我只是想指出你粘贴的代码没有缩进。 Python是缩进敏感的 - 你只是粘贴它错了,或者这是你的代码实际看起来如何? :)

现在,这里可能存在两个问题:

  1. Python版
  2. 当我尝试运行此代码时,它可以从中获取输入     命令行没问题。我使用的是Python 2.7.8。 raw_input方法     已在Python 3中重命名为input。因此,如果您正在使用     在Python 3中,您应该将raw_input更改为input

    如果你在Linux上,你可以在控制台上找到你的Python版本:

        $ python --version
    
    1. 浮动和字符串
    2. 当您从命令行获取输入时,使用inputraw_input,它将保存为字符串,如文档

      中所示

      https://docs.python.org/3/library/functions.html#input

      如果要将两个值相乘,则必须将它们转换为float,如下所示:

      weight = float(input("Please enter weight: "))
      height = float(input("Please enter height: "))
      

      我希望这可以解决你的问题:)