分岐処理

学習の目的

  • 1. 分岐構造とは

  • 2. 比較演算子

  • 3. Pythonのif文の書き方

  • 4. 分岐の条件を解いてみよう

1. 分岐構造とは

プログラムには、「条件によって実行する処理を変える」仕組みがあります。それを 「分岐構造」 といいます。

朝出かけるときに、雨が降っていたら何を持っていきますか?

雨降っているのであれば、濡れるの嫌だし傘を持って出ます。

私も傘持って出ます。降っていなかったら持って出ません。

これが分岐です。「雨が降っていたら?」が条件で、「雨が降っていた場合は傘を持ち」、「雨が降っていなかったら傘を持たない」のように条件が成り立っているかどうかで処理が変わる流れが分岐構造といわれるものです。

フローチャートでは次のように記述します。

この図のように、条件を記述し「その条件が成立しているか(Yes)」、「条件が成立していないか(No)」によって実行する処理を変えます。
また、条件では「同じか?」だけではなく、「大きい」や「小さい」などいろいろな条件を指定することができます。

条件を指定するための記号を「比較演算子」といいます。比較演算子は使うプログラミング言語で異なりますが、ここではPythonで使う比較演算子について学習します。

2. 比較演算子

Pythonで使う主な比較演算子は次のとおりです。

演算子 意味 条件式例 説明
== 等しい x == 0 変数x の値が 0 ならば真
!= 等しくない x != 0 変数x の値が 0 でなければ真
> より大きい x > 0 変数x の値が 0 より大きければ真
>= 以上 x >= 0 変数x の値が 0 以上ならば真
< より小さい(未満) x < 0 変数x の値が 0 未満ならば真
<= 以下 x <= 0 変数x の値が 0 以下ならば真

比較した結果が正しい(成立した)場合を真(True)といい、フローチャートでは「Yes」にあたります。条件が正しくない(成立しない)場合を偽(False)といい、フローチャートでは「No」にあたります。

数学では「=」が等しいという意味ですが、多くのプログラムでは「=」は変数への代入、等しいかどうかの比較には「==」を使うことに注意しましょう。

例えば、テストの結果から合否を判定するプログラムを作成するとします。
使用する変数及び判定基準を以下のようにするものとします。

・得点は変数scoreに格納する

・判定結果は変数resultに格納する

・得点が70点以上の時に判定を「合格」、それ以外は「不合格」とする

・最後に判定結果を表示する

このプログラムを実現するためにフローチャートは次のようになります。
※注意:下記のフローチャートはわかりやすくするため変数scoreに「90」を最初に代入をしています。

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

score = 90
if score >= 70:
  result = "合格"
else:
  result = "不合格"
print(result)

このプログラムは次のように作られています。

プログラムの説明

行番号 Pythonの命令文 説明
1 score = 90 変数scoreに90を代入する
2 if score >= 70: if命令は条件を指定する命令文
条件は「score >= 70」なので変数scoreの値が70以上であれば真となる条件を指定している
3 result = "合格" 条件が「真」の時に実行する命令文
条件が成り立っていた場合に、変数resultに"合格"を代入する
4 else: if文で指定した条件が偽の場合の処理の開始位置(フローチャートでの「No」の場合)を指定する命令文
これ以降に記述する処理が、条件が偽の場合の処理となる
5 result = "不合格" 条件が偽の時に実行する命令文
条件が成り立っていなかった時に、変数resultに"不合格"を代入する
6 print(result) 変数resultを出力する

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

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

分岐処理はPythonでは「if文」で記述します。続いてPythonでのif文の書き方を学習しましょう。

3. Pythonのif文の書き方

Pythonのif文の書き方は次のとおりです。

if文の基本形

if 条件式:

    真の場合の処理

else:

    偽の場合の処理

if文の基本形

Pythonでは、条件や「else」の後には「:(コロン)」を付けます。

また、インデント(字下げ)がとても重要です。インデントが無いとエラーになります。
インデントは、どこまでが条件に応じた処理なのかを示す役割があります。

条件が偽の時に実行する処理がない場合は「else:」以下は省略することができます。

変数scoreの値が70以上であれば"合格"、そうでなければ"不合格"を表示するPythonプログラムのif文を確認してみましょう。

Pythonでのif文の書き方はプログラムを作っていくと自然と覚えていけるので、今はわからなくても心配いりません。

4. 分岐の条件を解いてみよう

次の問題にはフローチャートの分岐の部分のみが抜粋されています。指示にあるような処理を行うための分岐の条件を考えましょう。

問題 テストの点数によって、ゲームをできる時間を変えるプログラムを考えます。

  • テストで100点を取ったとき → 120分
  • それ以外の点数のとき → 60分

ここで、

  • テストの点数を入れる変数を score
  • ゲームをする時間を入れる変数を time

とします。

次のフローチャートにある①、②の部分には「条件式」を入れる必要があります。
解答群から正しい条件式を選び、完成させましょう。

①と②は「Yes/No」で実行する処理が異なっているところに注意しましょう!

①にあてはまる命令を解答群から選んで答えてください。

②にあてはまる命令を解答群から選んで答えてください。

※この再現版では提出は行いません(送信先は未接続です)

Well done!

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

次のステップに進む

← 前のステップにもどる