
Table of Contents(目次)
Pythonの条件分岐とは?if文の基本を初心者向けに解説
プログラムは通常、上から下へ順番に実行されます。これを「順次実行」と呼びます。

しかし、現実の判断には「もし〜なら」のような条件に応じた分岐が必要です。そこで使うのが条件分岐(if文)です。

条件分岐は、プログラムが「状況に応じて動作を変える」ための仕組みで、「もし雨なら傘を持つ」「晴れていたら散歩する」といった、現実の判断をプログラムで表現できます。ある条件が満たされているときだけ実行する処理や、いくつかの候補から最初に当てはまったものだけ実行するといった柔軟な動作が可能になります。
if / elif / else の意味と使い方をわかりやすく解説
条件分岐に使うキーワードは3つあります。
- if
- 「もし〜なら」という意味で、1番最初の条件をチェックします。
if
の行に書いた条件がTrue
の場合(条件を満たした場合)に、その直下のインデントされた処理が実行されます。- 条件が
False
の場合(条件を満たさない場合)は、ifのブロックの処理は行われません。 - 条件分岐の先頭に必ず記述します。
- elif
- 「else if(それ以外で、もし〜なら)」の短縮で、
if
の条件が満たされなかったときに追加で別の条件をチェックするためのキーワードです。elif
は何個でも並べられます。 elif
は必須ではありません。
- 「else if(それ以外で、もし〜なら)」の短縮で、
- else
- 「どれにも当てはまらない場合」の処理を書くためのキーワードです。条件は書きません。
if
とelif
のどれにも当てはまらない場合にelse
のブロックが実行されます。 else
は必須ではありません。
- 「どれにも当てはまらない場合」の処理を書くためのキーワードです。条件は書きません。
if
は最初の布石、elif
はその後に続く追加のチェックです。if
がTrue
ならelif
はチェックされずスキップされます。(最初に当たったものだけ実行されます。)
Pythonでの条件分岐の基本形|コロンとインデントの使い方
Pythonでの条件分岐の基本形は次の通りです。コロン(:
)とインデントを忘れないことが非常に重要です。
if 条件A:
処理A-1 # インデント(空白4つ)を付ける
処理A-2 # 同じ深さのインデントに揃える
elif 条件B:
処理B-1 # これは、elif(条件B)の条件を満たしたときの処理
処理B-2
処理B-3 # ここまで、条件Bのブロック
elif 条件C:
処理C # elifは幾つでも設定できる
else:
処理D # どの条件も満たさなかったときの処理
ここでの大事なポイント:
条件
はnum > 0
のような比較式や、bool(ブール)値を返す式を書きます。- bool値に関しては、専用のレクチャーで学習します。
- このレクチャーで出てくる比較式は次の通りです。
A > B
: 「AがBより大きい」場合にTrue
になります。AとBがイコールの場合はFalse
になります。A >= B
: 「AがB以上」の場合にTrue
になります。AとBがイコールの場合もTrue
になります。A == B
: 「AとBの値が同じ」場合にTrue
になります。
:
(コロン)で条件式の終わりを示します。if/ elif/ else
の条件を満たしたときの処理を、インデントを付けて記述します。- インデントが解除されるまで、条件を満たしたときに実行する処理とみなされます。
elif
とelse
は省略可能で、用途に合わせて使います。elif
は幾つでも設定できます。else
は1番最後に1回だけ設定できます。

Pythonのインデントとは?初心者でもわかる字下げのルール
Pythonは、インデント(字下げ)を使って『if
の条件を満たしたときの処理の範囲(ブロック)』『elif
の条件を満たしたときの処理のブロック』...を管理しています。
他の言語では{}
(波カッコ)でブロックを示すことが多いですが、Pythonでは字下げそのものがブロックの境界として認識されます。ですので、インデントが正しくないと、どのコードがどの条件のブロックなのか、Pythonが判断できずにエラーになります。
インデントは半角スペース4つが基本です。(Visual Studio Codeでは、TAB
キーを押すと、半角スペース4つ分のインデントが挿入されます。)
正しいインデント例|Python if文のブロックの書き方
Pythonは同じ深さのインデントが続く限り、同じブロックと認識します。なお、ブロックの中に空行があった場合、その空行の後に同じ深さのインデントの行が続けば、同じブロックとして認識されます。
インデントを解除する(元の深さに戻す)と、ifの処理の範囲外と認識されます。
num = 10 # numの値を書き換えて、処理の流れを確認してみましょう
if num > 0:
# インデントが4スペースで揃っている
print("正の数です")
print("これも if の中の処理です")
print("これは if の外の処理です")
上記コードの処理の順序(numが10
だった場合)
- 1行目で
num = 10
を代入 if num > 0:
を評価 →10 > 0
はTrue
(条件を満たす)- インデントされた2行の
print
を順に実行- 同じ深さのインデントが続く限り処理される
- インデント外の
print
を実行して終了
# 実行結果 #
正の数です
これも if の中の処理です
これは if の外の処理です
上記コードの処理の順序(numが-5
だった場合)
- 1行目で
num = -5
を代入 if num > 0:
を評価 →-5 > 0
はFalse
(条件を満たさない)- インデントされた行は実行されない
- インデント外の
print
を実行して終了
# 実行結果 #
これは if の外の処理です
インデント忘れNG例|Python初心者がつまずくポイント
if
の直下の処理にインデントがないため、Pythonが構文エラーを出します。初学者が最初につまずく代表例です。
if num > 0:
print("正の数です") # IndentationErrorになる
インデントの深さがバラバラのNG例と解決法
ifのブロックの中は常に同じ深さのインデントで揃える必要があります。ブロック内のインデントが統一されていないと、IndentationError(字下げエラー)になります。
# NGな例
if num > 0:
print("正の数です")
print("これも正の数です") # スペースの数が揃っていないのでエラー
print("これも正の数です") # スペースの数が揃っていないのでエラー
# OKな例
if num > 0:
print("正の数です")
print("これも正の数です") # OK: スペース4つで揃えられている
print("これも正の数です") # OK: スペース4つで揃えられている
実際に動かせるPython条件分岐のコード例
if文のみのコード例|条件に当てはまったときだけ処理
if文の条件を満たしたときだけ、処理を実行します。条件に当てはまらなければ、ifのブロックの中の処理は行われません。
num = 10 # numの値を書き換えて、処理の流れを確認してみましょう
if num > 0:
print("numは正の数です")

else
の行がない場合、if
の条件を満たさなかったときは何の処理も行わずに本線に戻ります。このプログラムの処理順 (num=10の場合)
num = 10
を評価して変数num
に10を代入する。if num > 0:
を評価する(10 > 0
→True
)。- 条件が
True
なので、インデントされたprint("numは正の数です")
を実行する。 - 以降、他に実行する処理がなければプログラム終了。
このプログラムの処理順 (num=-5の場合)
num = -5
を評価して変数num
に-5を代入する。if num > 0:
を評価する(-5 > 0
→False
)。- 条件が
False
なので、インデントされたprint("numは正の数です")
は実行されない。 - 以降、他に実行する処理がなければプログラム終了。
if + elseのコード例|条件に当てはまらない場合の処理
最初のifの条件に当てはまらなかったときは「else(それ以外)」が動きます。else
は「条件に当てはまらない場合すべて」をカバーします。
num = -3
if num > 0:
print("正の数")
else:
print("ゼロか負の数")

このプログラムの処理順
num = -3
を代入。if num > 0:
を評価 →-3 > 0
はFalse
。if
のブロックはスキップされ、else
のブロックに移動する。print("ゼロか負の数")
を実行する。- プログラム終了。
if + elifのコード例|複数条件を順番にチェック
複数の条件を順番にチェックしたいときはelif
を使います。
num = 0
if num > 0:
print("正の数")
elif num == 0:
print("ゼロ")

このプログラムの処理順
num = 0
を代入。if num > 0:
を評価 →0 > 0
はFalse
。elif num == 0:
を評価 →0 == 0
はTrue
。print("ゼロ")
を実行する。- プログラム終了。
このコードにはelse
がないため、もしnum
が負の数だった場合は「どの条件にも当てはまらない」ことになり、結果として何も出力されずにプログラムが終了します。
if + elif + elseのコード例|複数条件の包括的分岐
elif
は何個でも追加できます。最後にelse
をつければ「どれにも当てはまらない場合」も書けます。
# 例: scoreに応じて評価を表示
score = 75
if score >= 80:
print("Excellent") # 優秀
elif score >= 60:
print("Pass") # 合格
elif score >= 40:
print("Make-up Exam") # 補講
else:
print("Fail") # 不合格

このプログラムの処理順
score = 75
を代入。if score >= 80:
→75 >= 80
はFalse
。elif score >= 60:
→75 >= 60
はTrue
。print("Pass")
を実行する。- プログラム終了。
上記コード例では、score >= 60
の行がTrue
になった時点で、それ以後のelif score >= 40
やelse
は評価されずスキップされます。(最初に当たったものだけが実行されます。)
if/ elif/ else
は、『上から順に評価して、最初にTrue
になったブロックだけが実行される』という挙動を理解することが非常に重要です。
Python条件分岐でよくある間違いと注意点
Pythonでコロン(:)を忘れるとエラーになる理由
if
の行の最後に:
を書くことを忘れないようにしましょう。忘れると構文エラーになります。
# NG(エラー)
if num > 0 # ← コロンがないとSyntaxError
print("...")
条件の順序ミスに注意|Python if文の評価順
閾値チェックをする場合は、数値が大きい条件から順に書くのが基本です。誤った順にすると上位の条件で捕まってしまい、下の条件が実行されなくなります。
# 間違った例(想定外の結果になる)
score = 85 # 本当は"Excellent"
if score >= 60: # ここでTrueになってしまい、"Excellent"ではなく"Pass"になってしまう
print("Pass")
elif score >= 80:
print("Excellent")
上記のような、評価を順番に付けていく例の場合、大きい条件(厳しい条件)から順に書くことで、想定通りの分岐が行われます。例えば>= 80
,>= 60
,>= 40
...という順に条件を確認していけば、想定通りの結果になります。
if~elifとif-ifの違い|条件分岐の挙動を理解しよう
次の2つの例は似ていますが、一方はif~elif
を使い、もう一方はif
のみで構成されています。
if~elif
を使っている方は、score = 85
に対して"Excellent"と結果がでますが、if
のみで構成すると"Pass"が結果として出力されます。フローチャート図で処理の流れを確認しましょう。
# if ~ elif
score = 85
if score >= 80: # ここでTrueになり、elifのブロックは実行されない("Excellent"で確定する)
result = "Excellent"
elif score >= 60:
result = "Pass"
print(result) # "Excellent"が出力される
elif
は、それよりも前のif
やelif
の条件が満たされた場合は評価されずにスキップされます。ですので、if score >= 80:
がTrue
になると、"Excellent"が確定します。

# if のみ
score = 85
if score >= 80: # ここでTrueになり、resultに"Excellent"が代入される
result = "Excellent"
if score >= 60: # ここでもTrueになり、resultに"Pass"が代入される
result = "Pass"
print(result) # "Pass"が出力される
if
は、それよりも前のif文の結果に関わらず、新規に評価が始まります。最初のif文の評価が終わるとフローチャート図の"本線"に戻り、2つ目のif文の評価が始まります。
