2016-12-04 12 views
0

私は非常に簡単なプロジェクトを持っています。これは、単純なBMIの計算だと単に印刷、(名前)のためのオブジェクトを文字列に出力するためのPythonヘルプ

」BMIは、(BMI)である必要があり、(彼らは体重不足、太りすぎなどしている場合のような状況、)

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 BMI < 18.5: 
      self.__getStatus = "Underweight" 
     elif 18.5 < BMI < 24.9: 
      self.__getStatus = "Normal" 
     elif 25.0 < BMI < 29.9: 
      self.__getStatus = "Overweight" 
     elif BMI > 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 

    def __str__(self): 
     return "The BMI for", + self.__name(), + "is", + self.__getBMI() 

    def PrintBMI(self): 
     print(self.__str__()) 

a = caclBMI  
print(a) 

私は続けます取得:。。

<class '__main__.calcBMI'> 

私はそれは私がオブジェクトを文字列に変換する必要があることを知っていると私は、単純な何かが欠けてると確信している

感謝をあなたがそうすることを選択しなければ助けるため

+0

あなたがしようとすると、あなたは何を得ているが印刷しますか? –

+0

'__str __()'の '__getBMI()'の呼び出しは、定義されていないためにおそらく動作しません。 – theorifice

+0

実際にオブジェクトをインスタンス化していないようです。 'CalcBMI'のインスタンスをインスタンス化する必要があります – theorifice

答えて

0

__str____repr__メソッドを実装するだけです。

https://docs.python.org/3/reference/datamodel.html#object.str

https://docs.python.org/3/reference/datamodel.html#object.repr

class calcBMI: 
    def __str__(self): 
     return "The BMI for {} is {}".format(self.__name, self.getBMI()) 

    def __repr__(self): 
     return 'calcBMI({}, {}, {), {})'.format(self.__name, self.__age, self.__height, self.__weight) 

... 

a = calcBMI("Zogzog", 123, 210, 176) 
print(a) 
+0

OPは '__str __()'を実装しているようです – theorifice

+0

あなたは正しいでしょう@theorifice –

+0

ええ、間違って –

1
a = caclBMI 

あなたはクラスにaリバウンドしました。代わりにクラスをインスタンス化する必要があります。

0

実際にオブジェクトをインスタンス化していないようです。 float値を返して、あなたはstringに変換する必要がありself.getBMI()ので

def __str__(self): 
     return "The BMI for " + self.__name + " is " + str(self.getBMI()) 

:あなたは、次の方法で問題を抱えているCalcBMI

... 

my_calc_bmi = CalcBMI(my_name, my_age, ...) 
print "String representation is: ", my_calc_bmi 
print "Or converting explicitly: %s" % (str(my_calc_bmi)) 
0

のインスタンスをインスタンス化する必要があります。

また、あなたは次のように代わりにクラスをインスタンス化する必要があります。たとえば

a = caclBMI(name, age, weight, height) 

を:

a = calcBMI('Alex', 25, 100, 60) 
print(a) 

それは出力:

The BMI for Alex is 0.027777777777777776 
+0

今私はTypeErrorを取得しています: 'str'オブジェクトは呼び出し可能ではありません –

+0

私は= calcBMI 、体重、身長) –

+0

- 'self .__ name'と' str(self.getBMI()) 'を使用していることを確認してください。そうでない場合は、コードを更新してください。確認することができます。 –

関連する問題