条件分岐(if文)

Python基礎・条件分岐(if文)
スポンサーリンク
スポンサーリンク

Pythonで条件分岐を行うには if 文を利用します。ここでは if 文の扱い方について解説します。Pythonの学習をすすめる上で、if文の理解は不可欠なポイントです。

スポンサーリンク

if 文の基本的な使い方

if 文は指定した条件式が True(真)の時にだけ処理を実行します。基本的な書式は次の通りです。

if 条件式:
    条件式がTrue(真)のときに実行する処理

if 文の最後に:(コロン)を付けます。
条件式がTure(真)の場合は、その後に記述されたブロックの中の処理を実行します。

Pythonではブロックをインデントで定義しており、インデントはスペースを4つ使う事が推奨されています。
Visual Studio Codeを利用する場合は、インデントの階層毎に色分けしてくれる拡張機能があります。
・参考記事:Visual Studio Code おすすめ拡張機能

次のサンプルプログラムでは、valueの値を判定し、1だった場合のみ「1です」と出力します。


次のプログラムでは、if 文が false(偽)となるため、if 文のブロックの処理は実行されずに、次の処理に移ります。

条件式が偽の時の処理 (if else)

if 文は指定した条件式が True(真)の時にブロック内の処理を実行しますが、else 文を記述しておくと、False(偽)の時に実行する処理を指定する事ができます。

if 条件式:
    条件式がTrue(真)のときに実行する処理
else:
    条件式がFalse(偽)のときに実行する処理

else の後ろにも:(コロン)を付ける必要があります。

次のサンプルでは、if 文での判定が False となるため、else 文の後のブロックが実行されます。

複数条件での条件分岐(if elif else)

if 文では単独の条件式だけではなく、複数の条件式を使った条件分岐を記述することもできます。複数の条件式を追加するには、elifを使用して、if...elif...elseの構文型にします。

if 条件式1:
    条件式1が True(真)のときに実行する処理
elif 条件式2:
    条件式1が False(偽)で、条件式2が True(真)のときに実行する処理
elif 条件式3:
    条件式1が False(偽)かつ条件式2が False(偽)で、条件式3がTrue(真)のときに実行する処理
else:
    全ての条件式が False(偽)のときに実行する処理

条件式 1 が偽だった場合、次の条件式 2 を評価して、真の場合は次のブロックの処理を実行して 次のif 文の処理へ移ります。すべての条件式で同じことを繰り返し、最後にすべての条件式が偽だった場合に最後のブロックの処理を実行します。

論理演算子(and)による複数条件指定

論理演算子のandを利用して、複数の条件を記述することもできます。
and演算子は、2つ以上の条件文のすべてがTrue(真)の状態を指定する時に使用します。

if 条件式1 and 条件式2 :
       条件式1、条件式2がともにTrueの時に実行する処理

論理演算子(or)による複数条件指定

論理演算子のorを利用して、複数の条件を記述することもできます。
or演算子は、2つ以上の条件文のうち少なくとも1つがTrue(真)の状態を指定する時に使用します。

if 条件式1 or 条件式2 :
       条件式1、条件式2のどちらかがTrueの時に実行する処理

以下の例の場合、a < 20True(真)となるため、print('True')が実行されます。

論理演算子(not)による否定条件指定

not は、条件式の結果がTrue(真)であればFalse(偽)、False(偽)の場合はTrue(真)を返す演算子です。そのため if not 条件式は、条件がFalse(偽)であればTrue(真)を返すことになり、if文内の処理が実行されます。

if not 条件式1:
    条件式1がFalseの時に実行する処理
else:
    条件式1がTrueの時に実行する処理

以下の例では、条件式1の a == 1False ですが、not演算子により True となり、print('値は1ではありません') が実行されます。


以下の場合は a = 1 のため、条件式1の a == 1True ですが not演算子によりFalseとなり、ifブロックの処理は実行されず、elseブロックの処理が実行されます。

andとorを使った複数条件の指定

andor を組み合わせて条件を指定する事ができます。この場合はandorより優先して判定されます。
・関連記事:演算子ー演算子の優先順位

if 条件式1 or 条件式2 and 条件式3:
    上記の条件文がTrueの時に実行する処理

以下の場合 a > 10 and b == 30 が優先して判定されて False となり、a < 20Trueなので、True or False の演算の結果 Trueとなります。

もし a < 20 or a > 10 を先に処理したい場合は、()括弧で条件式を囲むことで判定順序を変更します。 (True or False) and False の演算となり、結果はFalseとなります。

何も実行しない(pass)

Pythonのpass文は「何も実行しない」という命令であり、構文上は何かしら記述する必要があるが、何も処理を実行しない という場合に使用します。

Pythonでは条件分岐のif文では中身を省略することができない為、何も記述しないとエラーになります。そこで何も処理をさせない場合は、pass文を記述することでエラーを回避します。

以下の場合、1番めの条件式がTrue となり pass が実行されることで、何も出力されずに終了します。

if else文を一行で記述する(三項演算子)

if 文のような処理を一行で記述することができる記述方法があり、三項演算子と呼びます。
構文は以下のようになります。

条件がTrueのときの値 if 条件 else 条件がFalseのときの値

if...elif...else文も三項演算子で書くことはできますが、可読性が低くなるためインデント使って書くことをおすすめします。

Pythonで if を使って条件分岐を行う方法を解説しました。

・関連記事:繰り返し処理(for文)