BMIとは、肥満度を表す数値で次式で計算されます。
【BMI計算式】 肥満指数(BMI)= 体重 kg ÷ (身長 m ×身長 m )
① あなたの体重は平均か? これをPythonで組んでみましょう。 GUIではないですが、このShellでのプログラミンが楽にできると、tkinterででも出来るようになります。
#次のように質問されます。
print(‘身長(cm)は?’)
height = float(input(‘you > ‘))
print(‘体重(kg)は?’)
#Pythonが計算します。
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太りすぎと出ますので、次回そこを直します。
② 不具合修正
前回は体重が平均より低い場合に、「-1.6kg太りすぎです」など表示されるのを修正しました。どう直したかはcodeを見て下さい。
height = float(input(‘you > ‘))
print(‘体重(kg)は?’)
urweight = float(input(‘you > ‘))
bmi = 22 # BMI
print(‘身長が’ + str(height) + ‘cmの場合の標準体重は’, end=”)
print(‘{:.1f}kgですので、’.format(weight),end=”)
・もしあなたの体重が平均体重より低い時(dif<0)には「痩せ過ぎ」と表示させています。
・それ以外の時は、今まで通りです。
・{:.1f}は小数点一桁以下まで表示という意味です。小数点二けたなら{:2f}と書きます。
else: print(‘{:.1f}kg’.format(dif)+’太りすぎです。’)
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の計算結果を表示できました。