Python ミッション2_BMI測定機(2)

python

さて前回の続きだ。
まずはここまでのコードを再掲しておこう。

height=input('身長(cm)を入力してください>')
weight=input('体重(kg)を入力してください>')
height=float(height)/100
weight=float(weight)
bmi=weight/(height*height)
print('BMI:',bmi)

[実行例]

身長(cm)を入力してください>160
体重(kg)を入力してください>52
BMI: 20.312499999999996

今回はこの算出されたBMIに基づいて、以下の基準に基づいて太っているかどうかの判定を行う。

BMI 判定
25以上 肥満
18.5以上25未満 標準体重
18.5未満 痩せ型

「作ってみよう」
それではさっそく作っていこう。
今回はBMIの値によって処理を分岐させなくてはならない。
pythonではif文というのを使う。
まずはpythonでの基本的なif文を学習していこう。

if文

x=10
if x>0:
  print('正の数です。')

これは変数xに正の数が入っている時に
正の数です。
と表示される処理だ。

if 条件:
    #ここにその条件が正しい時の処理を書く

その際に処理を書く部分は字下げ(インデント)を行わなくてはならない。

if ~ else 文

今回は正の場合のみ表示する処理だが、そうでない場合も表示するようにしよう。
以下のように変更する。

x=10
if x>0:
    print('正の数です。')
else:
    print('正の数ではありません。')

条件式が成立しないとき(偽のとき)の処理を書きたい場合にはelse:をつける。
(処理を書く部分はインデントしなくてはならないのは同様)

試しにx=-10にして実行してみよう。
正の数ではありません。
と表示される。

上の例ではxが0より大きいかどうかという判定を行ったが、この判定には様々なものがある。
以下に例を示す。

  • x == 10 (xが10と等しい時)
  • x > 10 (xが10より大きい時)
  • x < 10 (xが10より小さい時)
  • x >= 10 (xが10以上の時)
  • x <= 10 (xが10以下の時)
  • x != 10 (xが10ではない時)

if ~ elif ~else 文

さらに複雑な分岐を行いたい場合がある。例えば点数によって優、良、可、不可に分類させる時などだ。
この場合、以下のようなコードとなる。

score = 64
if score > 80:
    print('優')
elif score > 60:
    print('良')
elif score > 40:
    print('可')
else:
    print('不可')

結果は良と表示されるが内部での流れを説明する。
まず一行目はよいだろう、変数scoreに64を代入している。
そしてif文だ。if文は上から順番に判定をしていく。最初はscore > 80 という判定だ。
64 > 80
となるのでこれは正しくない(偽)。なのでprint(‘優’)は行わずに次のelif に進む
64 > 60
これは正しい(真)。正しい時にはその直後の処理を行う。ここではprint(‘良’)を実行する。
そして、ここが大事なのだが一連のif ~elif ~elseの流れでは一つ成立したら以降の判定はおこなわれない。
したがって64は40よりも大きいのであるがprint(‘可’)が実行されることはない、

なので判定していく順番はしっかり考えなければならない。
以下はこの点を考慮せず誤ってコーディングしてしまった例だ。

score = 64
if score > 40:
    print('可')
elif score > 60:
    print('良')
elif score > 80 :
    print('優')
else:
    print('不可')

これだと思うような結果にならない。ここでは64点でもあるにもかかわらず、「可」と出力されてしまうことがわかるだろう。

BMI計算機のつづき

OK。これでif文の基本はばっちりだ。BMI計算機を仕上げていこう。
以下のように追記する。

height=input('身長(cm)を入力してください>')
weight=input('体重(kg)を入力してください>')
height=float(height)/100
weight=float(weight)
bmi=weight/(height*height)
print('BMI:',bmi)
if bmi>=25:
    result='肥満'
elif bmi>=18.5:
    result='標準体重'
else:
    result='痩せ型'
print(result)

以上で完成だ。if文の出てこないプログラムというのはまず存在しない。
しっかりと練習していこう。

コメント

タイトルとURLをコピーしました