【Python】if文|条件分岐処理

Python

条件にしたがって処理内容を分岐させることを「条件分岐」といいます。
Pythonでは「if~elif~else」をつかって記述します。

スポンサーリンク

条件分岐とは

「条件分岐」とは、条件によってプログラムの処理を分岐させることです。
「条件を満たせばコレ、満たさなければアレ」のような考え方です。

例えば、変数「i」の値が「70以上」の場合は「合格」と表示させて、それ以外は「不合格」と表示させるといったように、変数「i」に入力される値によってプログラムの実行結果を変えることができます。

構文

if文の構文はこちらです。
条件式の結果が「True」「False」のいずれかで処理が分岐されます。

if 条件式
    条件式が「Ture」となっている場合に実行される処理
elif 条件式
    条件式が「Ture」となっている場合に実行される処理
else:
    すべての条件式が「False」となった場合に実行される処理

ここでのポイントは2つあります。

  • ヘッダー(条件式の後ろ)は記号「:(コロン)」で終わること
  • 実行されるブロックはインデントされていること

なお、各用語の「節」「ヘッダー」「ブロック」については以下のとおりです。

if文の具体的な使い方

それでは具体的なコードをつかって動作確認をしてみましょう。

基本的な使い方

i = 1
if i == 1:
    print("iは数字の1です。")
else:
    print("iは数字の1ではありません。")
iは数字の1です。

変数「i」の値を変更します。

i = 2
if i == 1:
    print("iは数字の1です。")
else:
    print("iは数字の1ではありません。")
iは数字の1ではありません。

変数「i」の値によって出力結果が分岐されたことが確認できます。

複数の条件式

「elif」をつかうことによって条件式を追加することができます。

i = 10
if i >= 10:
    print("iは10以上です。") 
elif i >= 5:
    print("iは5以上です。")
else:
    print("iは5未満です。")
iは10以上です。

変数「i」の値を変更します。

i = 7
if i >= 10:
    print("iは10以上です。") 
elif i >= 5:
    print("iは5以上です。")
else:
    print("iは5未満です。")
iは5以上です。

変数「i」の値によって処理が分岐されたことが確認できます。
設定した2つの条件に対して、いずれにも該当しない場合は「else」以下のelseブロックが実行されます。

「elif」をつかう場合には1点注意が必要です。

if文では、条件判定は上から順に実行されます。
そのため次のコードでは、予期しない結果になってしまいます。

i = 10
if i >= 5:
    print("iは5以上です。")
elif i >= 10:
    print("iは10以上です。")
else:
    print("iは5未満です。")
iは5以上です。

今回の変数「i」は「10」ですので「iは10以上です。」と表示させたいところですが、上から順番に条件判定を行っているため、最初に該当する条件式「if i >= 5」のifブロックを実行してしまい、それ以降は実行されません。

そのためif文で条件設定をする際は、プログラムの判定順を考慮する必要があります

条件の判定基準

if文では、条件式が「True」となった際に処理が実行されます。

動作をより理解するために、もっともシンプルな条件分岐を確認してみましょう。

if True:
    print("Trueです。")
Trueです。

本来であれば条件判定をおこなう条件式に、出力結果である「True」を直接記述することによって処理を進めています。

このことから出力結果が真偽値(「True」もしくは「False」)をあらわす演算子であれば条件式に使えることがわかります。
具体的な演算子についてはこちら「【Python】演算子の種類と使い方」をご覧ください。

一行でif文を記述|三項演算子

if文は、一行で記述することもできます。

「True」のときの処理 if 条件式 else 「False」のときの処理

具体的なコードを使って確認します。

i = 1
answer = "iは1です。" if i == 1 else "iは1ではないです。"
print(answer)
iは1です。

三項演算子をつかった記述では、直接変数に出力結果を代入することができます。
その一方で、プログラミングコードの可読性が低くなってしまう問題もありますので、あまり複雑なコードでは使わないようにしましょう。