我正在使用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.")
答案 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是缩进敏感的 - 你只是粘贴它错了,或者这是你的代码实际看起来如何? :)
现在,这里可能存在两个问题:
当我尝试运行此代码时,它可以从中获取输入
命令行没问题。我使用的是Python 2.7.8。 raw_input
方法
已在Python 3中重命名为input
。因此,如果您正在使用
在Python 3中,您应该将raw_input
更改为input
。
如果你在Linux上,你可以在控制台上找到你的Python版本:
$ python --version
当您从命令行获取输入时,使用input
或raw_input
,它将保存为字符串,如文档
https://docs.python.org/3/library/functions.html#input
如果要将两个值相乘,则必须将它们转换为float,如下所示:
weight = float(input("Please enter weight: "))
height = float(input("Please enter height: "))
我希望这可以解决你的问题:)