複数の条件分岐(分岐処理2)

学習の目的

  • 1. 複数の条件分岐

  • 2. 複数の条件のプログラムを作ろう

1. 複数の条件分岐

プログラムでは、1つの条件だけでなく、いくつかの条件を順番に調べたいときがあります。
このとき使うのが複数の条件分岐です。

例えば、朝出かけるときに傘を持っていくかどうかはどうやって決めてますか?

さっきも言ったけれど、雨が降っていたらかな?

降っていなくても、天気予報を見て降水確率が高かったら持っていきます。

そうですよね。

雨が降っていたら持っていくし、降っていなくてもこれから降りそうであれば持っていきますよね。
このように複数の条件がある場合について考えていきます。

傘を持っていくかどうかの条件をまとめます。

① 雨が降っていたら傘を持つ

② 雨は降っていないが、降水確率が高い場合は傘を持つ

③ ①、②以外は傘を持たない

この手順をフローチャートにすると次のようになります。

このように、条件分岐の中に条件分岐をさらに記述することができます。

Pythonで条件の中に条件を記述するにはどうしたらよいのですか?

今回のように条件が「No」の時に条件を記述する場合はPythonでは次のように記述します。

「else:」の時に条件の「if」を書くときは「elif」と記述します。

2. 複数の条件プログラムを作ろう

次のフローチャートは、テストの得点(score)によって「お小遣いがいくら増えるか」を決めるものです。

お小遣いが増える条件と処理の流れは次のとおりです。

1. score を設定する(例として90を設定する)

2. score が 90 以上であれば up に 200 を設定する

3. score が 90 未満 80 以上であれば up に 100 を設定する

4. score が 80 未満であれば up に 0 を設定する

5. upを表示する

わかりにくいのは「3. score が 90 未満 80 以上であれば up に 100 を設定する」です。

そのまま条件を記述すると「80 ≦ score < 90 」となりますが、score が 90 以上の場合は一つ前の条件「2. score が 90 以上であれば up に 200 を設定する」で 処理されるため、条件3以降は 90 未満のデータだけになります。そのため、フローチャートでは「score >= 80」のみの条件になっています。

条件を記述する順番によっては、より簡単に条件を指定することができます。

フローチャートをPythonで記述すると次のようになります。

score = 90
if score >= 90:
  up = 200
elif score >= 80:
  up = 100
else:
  up = 0
print(up)

プログラムの説明

行番号 Pythonの命令文 説明
1 score = 90 変数scoreに 90 を代入する
2 if score >= 90: 変数scoreの値が 90 以上であれば真となる条件を指定している
3     up = 200 条件が「真」の時に実行する命令文
変数upに 200 を代入する
4 elif score >= 80: 2行目のif文が偽の時に実行される判断文
変数 score が 80 以上であれば真となる条件を指定している
5     up = 100 4行目の条件が偽の時に実行する命令文
変数upに 100 を代入する
6 else: 2行目、4行目のいずれの条件にも当てはまらない場合の指定
scoreが 90 以上でも 80 以上 でもない場合
7     up = 0 どの条件にも当てはまらなかった場合に実行される
変数upに 0 を代入する
8 print(up) 変数upを出力する

Pythonでプログラムを作るのは、フローチャートをそのまま記述できそうだから簡単そう!

フローチャートなどで処理の手順が明確であれば、フローチャートのまま作成できることが多いです。

手順を考えることが重要ですね。

フローチャートとPythonプログラムを確認したらGoogle Colabでプログラムを実行しましょう。

1度の実行だけではなく、1行目の「90」を「69」などにして実行してみましょう。

もう一つアルゴリズムを確認しましょう。

次のフローチャートは、あるサービスの料金(amount)を表示する手順を表しています。
サービス料金は年齢(age)ごとに次のように求めます。

・65歳以上は1,000円

・15歳以上65歳未満は2,000円

・15歳未満は1,000円

赤枠で囲まれた箇所を見て気づくことはありませんか?

同じ処理が入ってます。

そうですね。「変数amount に 1000 を代入する」という同じ処理が入っています。

分岐で同じ処理があるときは、条件を工夫して記述すると一つにまとめることができます。

この場合は、65歳以上という条件と15歳未満という条件をまとめるってことですか?

はい、そうです。

まとめるためには「論理演算子」を利用します。条件式で利用する論理演算子について学習しましょう。

Well done!

次のステップに進みましょう!

次のステップに進む

← 前のステップにもどる