解答例_2_5

解答例:練習問題_2_5(if~elif~else文+ブール演算)

内側(左下)のカテゴリーから条件を設定する場合
elseの後のコメント文には、後から確認し易くするためにelseの領域を記載しています。

max_pressure = 130
min_pressure = 80
if (max_pressure < 120) and (min_pressure < 80):
    category = '正常血圧'
elif (max_pressure < 130) and (min_pressure < 80):
    category = '正常高値血圧'
elif (max_pressure < 140) and (min_pressure < 90):
    category = '高値血圧'
elif (max_pressure < 160) and (min_pressure < 100):
    category = 'Ⅰ度高血圧'
elif (max_pressure < 180) and (min_pressure < 110):
    category = 'Ⅱ度高血圧'
else:  # (max_pressure >= 180) or (min_pressure >= 110)
    category = 'Ⅲ度高血圧'
print('最高血圧:', max_pressure,' 最低血圧:', min_pressure,' 判定:',  category)

最高血圧: 130 最低血圧: 80 判定: 高値血圧

外側(右上)のカテゴリーから条件を設定する場合
上記との違いは and の代わりに or を使用する必要があります。

max_pressure = 130
min_pressure = 80
if (max_pressure >= 180) or (min_pressure >= 110):
    category = 'Ⅲ度高血圧'
elif (max_pressure >= 160) or (min_pressure >= 100):
    category = 'Ⅱ度高血圧'
elif (max_pressure >= 140) or (min_pressure >= 90):
    category = 'Ⅰ度高血圧'
elif (max_pressure >= 130) or (min_pressure >= 80):
    category = '高値血圧'
elif (max_pressure >= 120) or (min_pressure >= 80):
    category = '正常高値血圧'
else:  # (max_pressure < 120) and (min_pressure < 80)
    category = '正常血圧'
print('最高血圧:', max_pressure,' 最低血圧:', min_pressure,' 判定:',  category)

最高血圧: 130 最低血圧: 80 判定: 高値血圧

ヒントでも述べましたが、何れの場合も条件文の順番を変えると間違うことになるので、気をつけましょう。
以下は条件文の順番の変更を可能にするためのコードです。条件文が少し複雑になるので変数化して記載しています。左下から始める場合についてのみ記載しています。

max_pressure = 130
min_pressure = 80

area_1 = (max_pressure < 120) and (min_pressure < 80)
area_2 = (max_pressure < 130) and (min_pressure < 80) and not area_1
area_3 = (max_pressure < 140) and (min_pressure < 90) and not area_2
area_4 = (max_pressure < 160) and (min_pressure < 100) and not area_3
area_5 = (max_pressure < 180) and (min_pressure < 110) and not area_4

if area_1:
    category = '正常血圧'
elif area_2:
    category = '正常高値血圧'
elif area_3:
    category = '高値血圧'
elif area_4:
    category = 'Ⅰ度高血圧'
elif area_5:
    category = 'Ⅱ度高血圧'
else:  # (max_pressure >= 180) or (min_pressure >= 110)
    category = 'Ⅲ度高血圧'
print('最高血圧:', max_pressure,' 最低血圧:', min_pressure,' 判定:',  category)


以上は解答例ですので、これら以外にも沢山の正解があるはずです。間違いが無いかどうかは、max_pressureとmin_pressureにいろいろな値を代入して問題の図と合っているかを確認して判断しましょう。

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