VBA別館・Python別館

64548

Python BMIチェック - Tak

2018/11/15 (Thu) 19:30:43


BMIとは、肥満度を表す数値で次式で計算されます。

【BMI計算式】 肥満指数(BMI)= 体重 kg ÷ (身長 m ×身長 m )

① あなたの体重は平均か?

これをPythonで組んでみましょう。 GUIではないですが、このShellでのプログラミンが楽にできると、tkinterででも出来るようになります。

----------------------

# tak_bmi.py 11/15/2018 一部不都合あり
# 体重の計算を小数点1桁にした


print('身長(cm)は?')
height = float(input('you > '))

print('体重(kg)は?')
urweight = float(input('you > '))

bmi = 22 # BMI
weight = bmi * (height / 100) ** 2
dif=urweight-weight

print('身長が' + str(height) + 'cmの場合の標準体重は', end='')
print('{:.1f}kgですので、'.format(weight),end='')
print('{:.1f}kg'.format(dif)+'太りすぎです。')

---------------------

これを動かすと(F5で)、図の様になります。 例を身長160cm、体重58kgで計算させました。

日本人の160cmの人の平均体重は56.3Kgですので、58kgの場合は1.7kg太りすぎと評価されています。

56.3kgより体重が低い人の場合は、-kg太りすぎと出ますので、次回そこを直します。

Re: Python BMIチェック - Tak

2018/11/17 (Sat) 11:58:14

② 不具合修正

前回は体重が平均より低い場合に、「-1.6kg太りすぎです」など表示されるのを修正しました。

どう直したかはcodeを見て下さい。

----------------------

#文字列メソッド(tak_bmi)2.py


print('身長(cm)は?')
height = float(input('you > '))

print('体重(kg)は?')
urweight = float(input('you > '))

bmi = 22 # BMI
weight = bmi * (height / 100) ** 2
dif=urweight-weight

print('身長が' + str(height) + 'cmの場合の標準体重は', end='')
print('{:.1f}kgですので、'.format(weight),end='')

if dif<0:
dif=weight-urweight
print('{:.1f}kg'.format(dif)+'痩せ過ぎです。')
else:
print('{:.1f}kg'.format(dif)+'太りすぎです。')

----------------------

ここを修正しました。

・もしあなたの体重が平均体重より低い時(dif<0)には「痩せ過ぎ」と表示させています。
・それ以外の時は、今まで通りです。
・{:.1f}は小数点一桁以下まで表示という意味です。小数点二けたなら{:2f}と書きます。

if dif<0:
dif=weight-urweight
print('{:.1f}kg'.format(dif)+'痩せ過ぎです。')
else:
print('{:.1f}kg'.format(dif)+'太りすぎです。')

Re: Python 文字型メソッド - Tak

2018/11/17 (Sat) 12:31:47

③ AI型プログラムの下準備

次のようなプログラムを作りました。 自分のデータを入れると、日本人の標準体重の基になるBMIと言う数値を計算してくれます。 

----------------------------

def bmi(height, weight):
  return weight / pow(height / 100, 2)

my_height =input('あなたの背の高さは(cm)?')
my_weight =input('あなたの体重は(kg)?')

my_bmi = bmi(weight=my_weight, height=my_height)

print('あなたのBMIは{:.1f}です'.format(my_bmi))

---------------------------------

身長と体重を入力して、BMIを表示するプログラムです。 これで上手く行くと思ったのですが、エラーとなりました。

理由は次回で。

Re: Python BMIチェック - Tak

2018/11/17 (Sat) 19:42:50

④ BMIの正しいプログラム

つぎの様に訂正しました。

--------------------------

def bmi(height, weight):
  return weight / pow(height / 100, 2)

my_height =input('あなたの背の高さは(cm)?')
my_height=float(my_height)

my_weight =input('あなたの体重は(kg)?')
my_weight =float(my_weight )

my_bmi = bmi(weight=my_weight, height=my_height)

print('あなたのBMIは{:.1f}です。'.format(my_bmi))

すると答えは次のように出ます。

あなたの背の高さは(cm)?160 <-- 自分で入れる
あなたの体重は(kg)?60   <-- 自分で入れる

あなたのBMIは23.4です。

------------------------

間違えていた所は、input()関数の変数は文字列なので、60と入れてもそれは六十という文字列だったという所です。 文字列ではBMIの数値計算は出来ませんね。

そこで計算する前に、文字列を数値変換しました。
my_height=float(my_height)がそうです。

これで無事BMIの計算結果を表示できました。


名前
件名
メッセージ
画像
メールアドレス
URL
文字色
編集/削除キー (半角英数字のみで4~8文字)
プレビューする (投稿前に、内容をプレビューして確認できます)

Copyright © 1999- FC2, inc All Rights Reserved.