BMI = 体重(kg)/身長(m)*2
そして、BMI によって肥満度が定義されています。
BMI が 18.5 以下→低体重
18.5 より大きく 25 未満→標準体重
25 以上 30 未満→肥満(1 度)
30 以上 35 未満→肥満(2度)
35以上→高度肥満
体重や BMI の値の推移を管理する Record クラスを作成しましょう。
コンストラクタ
引数 : 身長(cm)の値
機能 : 属性 self.height に引数の値をセット。体重のリスト self.weight と BMI のリスト self.BMI を初期化。
メソッド setWeight
引数 : 体重(kg)の値
機能 : 引数の体重の値を self.weight のリストに追加する。身長と引数の体重から BMI を計算し、BMI のリスト
self.BMI に追加する。
メソッド getWeight
引数なし
体重のリスト self.weight の最後の値を戻り値として返す
メソッド getBMI
引数なし
BMI のリスト self.BMI の最後の値を戻り値として返す
メソッド plotWeight
引数なし
体重のリスト self.weight を折れ線グラフで表示する
メソッド plotBMI
引数なし
BMI のリスト self.BMI を折れ線グラフで表示する
Record クラスをテストするためのメインプログラムでは、測定10回分の体重の値を、乱数を使って生成します。メインプ
ロラムの空欄では、getWeight()メソッドと getBMI()メソッドを利用して、実行結果例のように、各体重の肥満度を画面に出力するコードを完成させなさい。
という問題なんですが、
(質問)
関数が定義できていないとういエラーメッセージが出ました。listにBMIの数値がちゃんと入って、取り出せているか、他にもいろいろ怪しいですが、どこから直していけばいいでしょうか。
import matplotlib.pyplot as plt import random class Record: def __init__(self, h): self.height = h self.weight = [] self.BMI = [] def setWeight(self,w): h = height self.w = w self.weight.append(self.w) BMI = self.w/(h/100)**2 self.BMI.append(BMI) def getWeight(self): return self.weight[-1] def getBMI(self): return self.BMI[-1] def plotWeight(self): plt.plot(self.weight) plt.title("Changes in weight") plt.ylabel("kg") plt.grid(True) plt.show() def plotBMI(self): plt.plot(self.BMI) plt.title("Changes in BMI") plt.grid(True) plt.show() height = float(input('身長をcm 単位で入力してください>')) record = Record(height) for i in range(10): print("体重測定") record.setWeight(random.randint(60, 75)) if record.getBMI() <= 18.5: print("あなたの体重は",record.getWeight(),"kgで『低体重』です") elif record.getBMI() > 18.5 and record.getBMI() < 25: print("あなたの体重は",record.getWeight(),"kgで『標準体重』です") elif record.getBMI() >= 25 and record.getBMI() < 30: print("あなたの体重は",record.getWeight(),"kgで『肥満(1度)』です") elif record.getBMI() >= 30 and record.getBMI() < 35: print("あなたの体重は",record.getWeight(),"kgで『肥満(2度)』です") elif grecord.etBMI() >= 30: print("あなたの体重は",record.getWeight(),"kgで『高度肥満』です") print() print("体重の推移をグラフ化します") record.plotWeight() print("BMI の推移をグラフ化します") record.plotBMI() コード
身長をcm 単位で入力してください>170 体重測定 あなたの体重は 65 kgで『標準体重』です 体重測定 あなたの体重は 60 kgで『標準体重』です 体重測定 あなたの体重は 60 kgで『標準体重』です 体重測定 あなたの体重は 73 kgで『肥満(1度)』です 体重測定 あなたの体重は 63 kgで『標準体重』です 体重測定 あなたの体重は 67 kgで『標準体重』です 体重測定 あなたの体重は 67 kgで『標準体重』です 体重測定 あなたの体重は 68 kgで『標準体重』です 体重測定 あなたの体重は 71 kgで『標準体重』です 体重測定 あなたの体重は 66 kgで『標準体重』です 体重の推移をグラフ化します BMI の推移をグラフ化します
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/22 05:19
2020/12/22 05:21
2020/12/22 05:24
2020/12/22 05:26
2020/12/22 05:29
2020/12/22 05:31
2020/12/22 05:32
2020/12/22 05:38
2020/12/22 05:48