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

Pythonでのif文(条件分岐)の使い方について解説しています。

if文

Pythonの条件分岐で使う if文の書式は次の通りです

書式
if 条件式:
	条件式がTrue(真)の場合に行う処理

条件式の後には:(セミコロン)を付け、文はインデント(字下げ)して記述します。 条件式が True の場合のみ下の文が実行され、False の場合は実行されません。

具体的には次のように記述します。

a = 120

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

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

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

if elif else

2つ以上の条件を判断したい場合は、 「if elif else」文を使います。

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

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

具体的には次のように記述します。

a = 95

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

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

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

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

比較演算子、論理演算子

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

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

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

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

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

「True」と「False」の扱い

条件判断をする際に注意しておくことがあります。

文字列や数値もTrue、Falseで判定することができます。
例えば次のようなコードで True、False 判定が可能です。

a = 0

if a:
	print(True)
else:
	print(False)

True、False 判定をする場合、数値の0と文字列の空の値は False と判定され、 それ以外は True と判定されます。 表にすると次の通りです。

データ型TrueFalse
数値0以外0
文字列空の値以外空の値(None)

条件判断時に「数値の0と空の値は False として判定される」 ことを認識しておいてください。

次のコードで変数「a」にいろいろな値を代入して、 どのように判定されるのかを試した結果が下の表です。

a = 0

if a:
	print(True)
else:
	print(False)
「a」の値True / False
0False
1True
NoneFlase
""False
"hoge"True
"0"True
"\n"True
"\t"True
" "(スペース)True

何もしない pass

Pythonでは何もしないことを明示的に示す文として「pass」と記述します。

条件分岐などのあるブロックで、何の処理もしない場合は「pass」と記述しないと エラーになります。

例えば次のコードは「elif」の場合の処理が書かれていないため、 エラーが発生します。

a = 0

if a == 0:
	print(True)
elif a == 1:
	# 何もしない
else:
	print("ELSE")
実行結果
  File "test.py", line 7
    else:
       ^
IndentationError: expected an indented block

次のように「pass」と記述することで正常に実行できます。

a = 0

if a == 0:
	print(True)
elif a == 1:
	# 何もしない
	pass
else:
	print("ELSE")

Switch文はなし

結論からいうと「PythonにSwitch文はありません

多くのプログラミング言語には条件分岐の方法としてSwitch文があります。 Switch文は数多く分岐させたい場合に便利な方法です。
ですがPythonにはSwitch文はないので、 数多く分岐する必要がある場合も 「elif」を使って対応することになります。

よく言えばシンプルな言語設計です。
「他の言語ではよくあるけどPythonにはない」ものとして、 次のようなものがあります。

  • Switch文
  • do while文
  • ++(インクリメント演算子)
  • --(デクリメント演算子)
Python