🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

596閲覧

関数、listの扱い方

kkashi89sk

総合スコア12

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/12/21 14:37

編集2020/12/22 06:00

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 の推移をグラフ化します

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

record.getBMI() では?

投稿2020/12/21 14:56

episteme

総合スコア16612

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kkashi89sk

2020/12/22 05:19

できました。がgetweightもrecord.getweightとしたら、AttributeError: 'Record' object has no attribute 'getweight' と出ました。なにが違うのでしょうか?
episteme

2020/12/22 05:21

getWeight() では?
kkashi89sk

2020/12/22 05:24

またこうなります。やっぱり定義ができてないのでしょうか print("あなたの体重は",getweight(),"kgで『低体重』です") NameError: name 'getweight' is not defined
episteme

2020/12/22 05:26

いやだから W は大文字。
kkashi89sk

2020/12/22 05:29

あ、すみません。
kkashi89sk

2020/12/22 05:31

print("あなたの体重は",getWeight(),"kgで『低体重』です") NameError: name 'getWeight' is not defined こうですか?
episteme

2020/12/22 05:32

あーもー... record.getWeight() じゃろ getBMI() と同じカラクリなんだから。
kkashi89sk

2020/12/22 05:38

進みました。ありがとうございます!
episteme

2020/12/22 05:48

解決したなら close しといてね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問