name = str(input("What is your name? "))
age = int(input("What is your age? "))
weight_float = float(input("What is your weight in pounds? "))
height_float = float(input("What is your height in inches? "))
Pounds2Kilogram = weight_float * 0.453592
Inches2Meter = height_float * 0.0254
weight = Pounds2Kilogram
height = Inches2Meter
class calcBMI:
def __init__(self, name, age, weight, height):
self.__name = name
self.__age = age
self.__weight = weight
self.__height = height
def getBMI(self):
return self.__weight / (self.__height **2)
def getStatus(self):
if getBMI() < 18.5:
self.__getStatus = "Underweight"
elif 18.5 < getBMI() < 24.9:
self.__getStatus = "Normal"
elif 25.0 < getBMI() < 29.9:
self.__getStatus = "Overweight"
elif getBMI() > 30:
self.__getStatus = "Obese"
def getName(self):
return self.__name
def getAge(self):
return self.__age
def getWeight(self):
return self.__weight
def getHeight(self):
return self.__height
a = calcBMI(name, age, weight, height)
print("The BMI for ", a.getName(), " is ", a.getBMI(), "which is ", a.getStatus())
我在尝试打印这个 BMI 计算器时遇到了一些问题,最后它应该看起来像,
“(姓名)的 BMI 是(BMI 数字),即(状态,基本上是体重不足、超重等)”
当我尝试打印时出现问题,它提示我像平常一样输入我的姓名、年龄、体重和身高。
这就是它的输出:
NameError: name 'getBMI' is not defined
原因是在
getStatus
函数中,你正在调用 getBmi
但你应该调用 self.getBmi()
getStatus
函数应如下所示:
def getStatus(self):
if self.getBMI() < 18.5:
self.__getStatus = "Underweight"
elif 18.5 < self.getBMI() < 24.9:
self.__getStatus = "Normal"
elif 25.0 < self.getBMI() < 29.9:
self.__getStatus = "Overweight"
elif self.getBMI() > 30:
self.__getStatus = "Obese"
return self.__getStatus
此外,由于
input
自动返回一个字符串,你可以直接说
name = input("What is your name? ")
getBMI
未定义为全局函数,因此当您尝试仅将其引用为 NameError
时,会抛出 getBMI
。这个名字的方法不能像C++方法那样裸露地引用。 相反,实例必须将其方法引用为 self
的属性,即在本例中为 self.getBMI()
。
当您尝试将其称为“getBMI”时。这个名字的方法不能像C++方法那样裸露地引用。相反,实例必须将其方法作为 self 的属性引用,即在本例中为 self.getBMI() 。当您尝试将其称为 getBMI 时。这个名字的方法不能像C++方法那样裸露地引用。相反,实例必须将其方法作为 self 的属性引用,即在本例中为 self.getBMI() 。有很大的提供0.478992它指的是获取刚刚的getBMI这个方法不能像这样赤裸裸地引用提供的方式