BMI计算器出错

时间:2014-02-02 03:09:10

标签: python

我正在尝试使用python中的类计算器。我试着用这种方式解决:

class Person(object):
  def __init__(self,name,age,weight,height):
      self.name = name
      self.age = age
      self.weight = float(weight)
      self.height = float(height)
  def get_bmi_result(self):
      bmi = (self.weight)/float((self.height*30.48)*(self.height*30.48))
      print bmi
      if bmi <= 18.5:
        return "underweight"
      elif bmi>18.5 and bmi<25:
           return "normal"
      elif bmi>30:
           return "obese"
  pass

当我调用构造函数时:p = Person("hari", "25", "6", "30")p.get_bmi_result 它正在返回<bound method Person.get_bmi_result of <Person object at 0x00DAEED0>> 。 我以公斤和身高进入体重,在计算中我试图将脚转换成厘米。

1 个答案:

答案 0 :(得分:2)

您只是忘了调用您的方法:

p.get_bmi_result()

请注意()个括号。您只取消引用绑定的方法对象。

通过调用,您的代码运行得很好:

>>> class Person(object):
...   def __init__(self,name,age,weight,height):
...       self.name = name
...       self.age = age
...       self.weight = float(weight)
...       self.height = float(height)
...   def get_bmi_result(self):
...       bmi = (self.weight)/float((self.height*30.48)*(self.height*30.48))
...       print bmi
...       if bmi <= 18.5:
...         return "underweight"
...       elif bmi>18.5 and bmi<25:
...            return "normal"
...       elif bmi>30:
...            return "obese"
... 
>>> p = Person("hari", "25", "6", "30")
>>> p.get_bmi_result()
7.17594027781e-06
'underweight'

很明显,你的公式需要调整,对于体重6石头的人来说,体重指数(0.00MI7)根本体重不足,即使只有30英寸(?)小。

根据您的体重和身高单位大小,您可能需要consult the BMI formula并稍微调整一下方法。