さて前回の続きだ。
まずはここまでのコードを再掲しておこう。
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文の出てこないプログラムというのはまず存在しない。
しっかりと練習していこう。
コメント