Python: if文の使い方(条件分岐)

プログラムの3大制御構造(順次・条件分岐・繰り返し)のうちの1つ、 条件分岐について解説します。

多くのプログラミング言語では条件分岐はif文とswitch文の2種類がありますが、 Pythonはif文のみでswitch文はありません。 ですからif文・if-else文・if-elif-else文の使い方について解説しています。

if文

if文の処理構造をフローチャートで表したのが下図です。
条件分岐の中でも、最もシンプルな構文です。 条件式が真(True)の場合にifブロックに記述されている処理を行い、 条件式が偽(False)の場合には何も実行しません。

if文のフローチャート

書式
if 条件式:
	処理(ifブロック)

条件式の後には:(コロン)を付け、 処理を記述するifブロックはインデント(字下げ)して記述します。 :(コロン)はうっかり忘れがちなので注意してください。

Pythonではインデント(字下げ)でブロックの範囲を示すため、 インデントが重要な意味を持ちます。ブロックやインデントについて 詳しく知りたい場合は次の記事を参考にしてください。
(関連記事: Pythonの重要概念「インデントでブロックの範囲を指定する」

具体的なコードは次のようになります。

a = 120

if a >= 100:
	print("100以上です")

通常は条件式を()丸括弧で囲む必要はありませんが、 論理演算子を使うような複雑な条件式の場合は()をつけると見やすくなります。

if (a >= 100 and b >= 100):
	print("どちらも100以上です")

条件式が長くなる場合は、途中で改行して複数行に渡って条件式を記述することもできます。 その場合の記述方法は次の記事を参考にしてください。 (関連記事: Python: 文の途中で改行し、複数行で記述する方法

if-else文

if-else文の処理構造をフローチャートで表したのが下図です。
条件式が真(True)の場合だけでなく、 偽(False)の場合にも何らかの処理をしたい場合は if-else文を使います。
条件式がTrueの場合にifブロックの処理を実行し、 Falseの場合にはelseブロックを実行します。

if-else文のフローチャート

書式
if 条件式:
	処理(ifブロック)
else:
	処理(elseブロック)

:(コロン)は条件式の後だけでなく、elseの後にも必要です。 ifブロックとelseブロックはインデント(字下げ)して記述します。

if-elif-else文

if-elif-else文の処理構造をフローチャートで表したのが下図です。
条件式が成立しなかった時に、 別の条件式でTrue/Falseを判定したい時は if-elif-else文を使います。

条件式1がTrueの場合にifブロックの処理を実行し、 Falseの場合には条件式2を判定します。 条件式2がTrueの場合はelifブロックを実行し、 Falseの場合はelseブロックを実行します。

if-elif-else文のフローチャート

書式
if 条件式1:
	条件式1がTrueの場合に行う処理
elif 条件式2: 
	条件式1がFalseで条件式2がTrueの場合に行う処理
else:
	すべての条件式がFalseの場合に行う処理

「elif」の部分を「elseif」や「else if」 と記述するプログラミング言語もありますが、 Pythonでは「elif」と記述します。

上の例ではelifの部分(elif句)は1つですが、2つ以上あっても構いません。 特にPythonの場合はswitch文がありませんから、 数多く条件分岐したい場合はelif句を多数記述することになります。
(関連記事: Pythonに「++」、「--」、「switch」、「do while」は無い

次のコードはif-elif-else文のサンプルコードです。 elif句が2つあり、 変数aの値が100以上、90以上、80以上、80未満の4つの場合に分かれています。

a = 95

if a >= 100:
	print("100以上です")

elif a >= 90:
	print("90以上です")

elif a >= 80:
	print("80以上です")

else:
	print("80より下です")

比較演算子、論理演算子

if文の条件式で使う比較演算子と論理演算子は次の通りです。

比較演算子(== != <= ...)

演算子意味
==等値
!=不等値
<小なり
<=小なりイコール
>大なり
>=大なりイコール
in左辺が右辺に存在する
not in左辺が右辺に存在しない
is 左辺と右辺が同一
is not左辺と右辺が同一でない

論理(ブール)演算子(and or not)

演算子意味
and論理積
or論理和
not否定
Python