if else 文は、「A の場合は、A という行動を取る、 そうでない場合は B という行動を取る」というように条件によって、行う処理を分けたい時に使います。これを「条件分岐」といいます。
そして A の場合は処理 A、 B の場合は処理 B、 C の場合は処理 C というように条件を増やしたい場合に、if elif else 文を使います。
なお elif は “else if” の略です。
このページでは、この elif (else if) 文について、図も交えて、分かりやすく解説したいと思います。
if elif を学習する前に、先に「Pythonのif文を使った条件分岐の基本と応用」で、if else 文をしっかり理解しておきましょう。
1. if elif else 文とは
繰り返しとなりますが、if elif else 文は、「条件 A を満たす場合は処理 A を実行する。条件 B を満たす場合は処理 B を実行する。条件 A も条件 B も満たさない場合は処理 C を実行する」というものです。
英語の if は「もし ~ ならば」、else if は「もし ○○ ならば 」、else は「どちらでもなければ」という意味があります。例えば、
” If the score is above 20, the grade is A,
or else if the score is between 10 to 19, the grade is B,
or else the grade is C “
は、「もし80点以上なら評価はA、もし10点以上19点以下なら評価はB、どちらでもなければ評価はC」という意味です。
Python の if elif else 文はこれと全く同じです。流れを図にすると以下の通りです。
単純な if 文や if else 文では、分岐条件は 1 つだけでしたね。
elif 文は、そこに、さらに分岐条件を加えたい場合に使います。また、後ほど見ていきますが、elif はいくつでも追加できますので、分岐条件の数に制限はありません。
それでは、この if elif else 文の書き方を見てみましょう。次のように書きます。
if 条件式1:
処理A #半角空白4文字のインデント
elif 条件式2:
処理B #半角空白4文字のインデント
else:
処理C #半角空白4文字のインデント
まず if 文に条件式 1 を書き、その下に、インデントを入れてから、条件式 1 に当てはまる場合の処理を書きます。その下にインデントを入れずに elif 文で条件式 2 を書きます。そして、インデント入れてから、条件式 2 に当てはまる場合の処理を書きます。
最後に、else を書き、その下にインデントを入れてから、条件式 1 にも 2 にも当てはまらあない場合の処理を書きます。
else よりも先に elif を書くという点に注意ですね。そして elif 文は何個あっても構いません。
2. if elif else 文の使い方
それでは例を見ながら使い方を理解していきましょう。
以下のコードは、「もし80点以上なら評価はA、もし10点以上19点以下なら評価はB、どちらでもなければ評価はC」を返すものです。
'''random モジュールの randint 関数を読み込みます。'''
from random import randint
'''randint 関数で 10 から 30 の中からランダムに数値を作ります。'''
score = randint(0,30)
'''ここから if 文です。'''
if score >= 20:
print(f"{score}点です。評価は A です。")
elif 19 >= score >=10:
print(f"{score}点です。評価はBです。")
else:
print(f"{score}点です。評価はCです。")
このコードでは、最初に、randomモジュールを読み込んで、randint()という指定の範囲に収まる数値を、実行の度にランダムに返す関数を使っています。randint は “random integer (ランダムな整数)” の略です。
そして if 文で、
if score >= 20:
print(f"{score}点です。評価は A です。")
と書いています。これは、「もし点数が20点以上なら」という意味です。その下に、この条件が当てはまる場合の処理を書いています。この場合、「評価は A です。」と出力します。つまり、「もし点数が20点以上なら評価は A です。」という意味になります。
次の elif 文は、
elif 19 >= score >=10:
print(f"{score}点です。評価はBです。")
と書いています。これは、「もし点数が19点以下10点以上なら」という意味です。その下に、この条件が当てはまる場合の処理「評価はBです。」を実行します。つまり、「もし点数が19点以下10点以上なら評価は B です。」という意味になります。ここは単純に socre >= 10: でも構いません。
それ以外の場合の処理を示す else 文は、
else:
print(f"{score}点です。評価はCです。")
と書いています。つまり9点以下の場合は、「評価は C です。」を実行します。
結果を見てみると、点数は19点なので、B 評価が与えられていますね。プログラミングだと難しく考えずに、ただの英語だと考えると、分かりやすいと思います。実際、中学 1 年生レベルの英語力があれば、Python のプログラミングはとても簡単に感じられるようになります。
3. 複数の elif 文で条件分岐を増やす
上でも触れましたが if elif else 文では、elif (else if) は好きなだけ追加することができます。elif を増やすと、分岐条件を好きなだけ作ることができるようになります。
elif 文を増やすと、下図のように、条件分岐が増えていきます。
次の例は、elif を 2 つ使ったコードです。
'''random モジュールの randint 関数を読み込みます。'''
from random import randint
'''randint 関数で 0 から 100 の中からランダムに数値を作ります。'''
score = randint(0,100)
'''elif を 2 つ書いています。'''
if score >= 80 :
result = "A判定" #スコアが80以上の時、実行
elif score >=60 :
result = "B判定" #スコアが60~79の時、実行
elif score >= 40 :
result = "C判定" #スコアが40~59の時、実行
else:
result = "落第" #スコアが30未満の時、実行
'''結果を出力します。'''
print(f"{score}点:{result}")
もし点数が 80 点以上なら A 判定を、もし点数が 60 点以上なら B 判定を、もし点数が 40 点以上なら C 判定を、それ以外の場合は落第を与えるコードです。
elif 文で条件分岐を増やしていく時は、それぞれの条件が被ったりしていないか確認しながら行なっていきましょう。
5. まとめ
ここまで見てきたように elif (else if) は、if 文の分岐条件を増やすために使います。
コード自体は if, else if, else という中学 1 年生レベルの英語を理解していれば、スラスラ書けるようになると思います。注意点は、elif は、if と else の間に挟んで書くというぐらいでしょうか。
最初のうちは、条件分岐のフローを紙に書いたりすると、混乱することなく条件を増やしていけると思います。
ぜひ参考にして頂ければと思います。
コメント