Pythonのif文(条件分岐)の書き方の解説【elif, else】
- 作成日: 2025-06-09
- 更新日: 2025-06-22
- カテゴリ: 基本
Pythonのif文は「条件分岐」をやるための文です。
条件分岐は変数などの値を条件にして処理を枝分かれさせることを言います。
この記事ではPythonのif文を詳しく解説していきます。
参照するドキュメントは以下の通りです。
- Pythonのif文(条件分岐)の書き方の解説【elif, else】
Pythonのif文の構造
Pythonのif文の構造は次の通りです。
if 条件式:
処理

上記はもっともシンプルなif文です。
条件式に式を書きます。この式がTrueだと処理が実行されます。
式の結果がFalseであれば処理は実行されません。
Pythonのif-elseの構造
if文にはお尻にelseを付けることができます。
if 条件式:
処理1
else:
処理2

条件式がTrueのときは処理1が実行されます。
条件式がFalseのときはelseの処理2が実行されます。
elseはifやelifがいずれもFalseだったときに最終的に実行されるものです。
elseを付けておけば、条件式がすべてFalseだったときの処理を書くことができます。
Pythonのif-elifの構造
if文にはお尻に複数のelifを付けることができます。
if 条件式1:
処理1
elif 条件式2:
処理2
elif 条件式3:
処理3
elifは上の条件式がFalseだったときに条件式が実行されます。
上記の構造では一番最初にif 条件式1
の条件式が評価されます。
条件式1がTrueなら処理1が実行されます。
条件式2がFalseならelif 条件式2
の条件式が評価されます。
条件式2がTrueなら処理2が実行されます。
条件式2がFalseならelif 条件式3
の条件式が評価されます。
条件式3がTruenなら処理3が実行されます。
elifはifの下に無数に付けることができます。
評価される順番は上から下に向かってです。
Pythonのif-elif-elseの構造
if文にはelifとelseを一緒に付けることができます。
if 条件式1:
処理1
elif 条件式2:
処理2
else:
処理3
上記の構造ではまず条件式1が評価されます。
条件式1がFalseなら条件式2の評価に。
それもFalseならelseの処理3が実行されます。
条件式1や条件式2がTrueであればelseの処理3は実行されません。
Pythonのif文のBNF構造
Pythonのif文のBNF構造を見てみます。
参考:
8. if文 — 複合文 (compound statement) — Python 3.6.15 ドキュメント
if_stmt ::= "if" expression ":" suite
("elif" expression ":" suite)*
["else" ":" suite]
参照によると上記のようになっています。
BNFは::=
の左側が機能で、右側がその機能の構造になっています。
「if_stmt(if文)」は、まず「if」というキーワードがあり、そのあとに「expression(式)」が来ます。
そして「コロン(:)」が来て、その次に「suite(処理)」が来ます。
その後に0個以上の「elif」の構造が続きます。
elifは「elif」というキーワードが来て、その後に「expression(式)」が来ます。
その後に「コロン(:)」が来て、その後に「suite(処理)」が来ます。
これが0個以上続きます。
その後に「else」の構造が1個または0個あります。
elseは「else」というキーワードが来て、その後に「コロン(:)」が来ます。
その後に「suite(処理)」が来ます。
Pythonのif文のBNF構造を3行で言うと?
先ほどのPythonのif文のBNF構造は、3行で言うとこうなります。
- if文は「if 式: 処理」で始まる
- その後に0個以上の「elif 式: 処理」が続く
- 最後に「else: 処理」が付いたり付かなかったりする
実際のコードで見るPythonのif文
では実際にPythonのコードを書いてみましょう。
まずは普通のif文からです。
n = 1
if n < 2:
print('2より小さい')

上記のコードを実行すると「2より小さい」と表示されます。
これは変数n
の値が1で、2より小さいからです。
if文の「n < 2
」という条件式の結果はTrue(真)になります。
よってprint()
が実行されます。
Pythonのif-elseのコード
Pythonのif-elseをコードで見てみます。
n = 3
if n < 2:
print('2より小さい')
else:
print('2より小さくない')
上記のコードを実行すると「2より小さくない」と表示されます。
これは「n < 2
」という条件式の結果がFalse(偽)になるからです。
条件式の結果がFalseなので、
print('2より小さい')
上記のコードは実行されず、
print('2より小さくない')
上記のコードが実行されます。
Pythonのif-elifのコード
Pythonのif-elifをコードで見てみます。
n = 3
if n < 2:
print('2より小さい')
elif n < 3:
print('3より小さい')
elif n < 4:
print('4より小さい')
上記のコードを実行すると「4より小さい」と表示されます。
これは最初に「n < 2
」の条件式が評価されます。
n
は3で、n < 2
がFalse(偽)になるので、次の条件式に行きます。
次にelifの「n < 3
」が評価されます。
これも評価はFalseになるので、次の条件式に行きます。
最後に「n < 4
」が評価されます。
n
は3なので4より小さいです。よってこの式はTrue(真)になります。
そして「print('4より小さい')
」が実行されます。
Pythonのif-elif-elseのコード
Pythonのif-elif-elseをコードで見てみます。
n = 3
if n < 2:
print('2より小さい')
elif n < 3:
print('3より小さい')
else:
print('それ以外')
これも最初に「n < 2
」が評価されます。結果はFalseです。
次に「n < 3
」が評価されます。これも結果はFalseです。
if-elifでいずれもTrueにならなかったので、elseに行きます。
そしてelseの「print('それ以外')
」が実行されます。
Pythonの条件式について詳しく
Pythonのif文で使われる条件式について詳しく解説します。
条件式は式の一種です。
何かを判別するときに使われます。
たとえば変数aの中身は3かどうか。
こういうのを調べたいときに使うのが条件式です。
aとbが等しい(==)
aとbが等しいか判別する演算子がイコール(==)です。
「=」が二つ並んでイコール(==)になります。
一つではないので注意しましょう。
a == b

この演算子はaとbが同じものだったらTrue(真)になります。
たとえば
a = 1
b = 1
if a == b:
print('aとbは同じです。')
上記のコードは実行すると結果は「aとbは同じです。」と出力されます。
逆には以下では
a = 1
b = 2
if a == b:
print('一緒')
else:
print('aとbは同じではありません。')
上記のコードでは「aとbは同じではありません。」と出力されます。
これはaが1で、bが2で、それぞれ変数の中身が違うからです。
aとbが等しくない(!=)
aとbが等しくないときにTrue(真)になる演算子はノットイコール(!=)です。
a != b
この演算子はaとbが等しくなければTrue(真)、等しければFalse(偽)になります。
a = 1
b = 2
if a != b:
print('aとbは等しくないです。')
上記のコードを実行すると結果は「aとbは等しくないです。」になります。
aは1、bは2で、両方等しくないので「!=」の結果は真になるわけです。
等しい場合はどうでしょうか?
a = 1
b = 1
if a != b:
print('等しくない')
else:
print('aとbは等しいです。')
上記のコードの実行結果は「aとbは等しいです。」になります。
aとbはそれぞれ1になっていますので、等しいです。よって「!=」の結果はFalse(偽)になります。
aがbより小さい(<)
aがbより小さい時にTrue(真)になる演算子は小なり(<)です。
a < b
aがb「より小さい」です。「以下」ではなく「より小さい」になります。
つまりb自体は含みません。「1 < 2」は「1は2より小さい」になりますが「2 < 2」になった場合はFalse(偽)になります。なぜなら「2より小さい」は「2」を含まないからです。
a = 1
b = 2
if a < b:
print('aはbより小さいです。')
上記のコードの実行結果は「aはbより小さいです。」になります。
aは1、bは2で「1 < 2」になり、結果はTrue(真)になるからです。
ではaが2だったらどうでしょうか。
a = 2
b = 2
if a < b:
print('より小さい')
else:
print('aはbより小さくないです。')
上記のコードの結果は「aはbより小さくないです。」になります。
aは2、bは2で「2 < 2」になるので結果はFalse(偽)です。
そのためelseのprintが実行されます。
aがb以下(<=)
aがb以下かどうか判定する演算子は以下(<=)になります。
a <= b
aがb以下ならTrue(真)になります。
「a < b」は「より下」でしたが、「a <= b」は「以下」になります。
以下というのはb自身を含みます。つまり「2 <= 2」は真になります。
a = 1
b = 2
if a <= b:
print('aはb以下です。' )
上記のコードの実行結果は「aはb以下です。」になります。
aは1、bは2で、aはb以下ですので「a <= b」の結果はTrue(真)になります。
a = 3
b = 2
if a <= b:
print('以下')
else:
print('aはb以下ではありません。' )
上記のコードでは、aは3でbは2です。そのため「a <= b」はFalse(偽)になります。
Falseなのでelseのprintが実行されて結果は「aはb以下ではありません。」になります。
aがbより上(>)
aがbより上な時にTrue(真)になる演算子は大なり(>)です。
a > b
大なりはaがb「より上」、つまりbを含まずに上な時に真になります。
たとえば「2 > 1」は2は1より上なので真、「1 > 1」は左の1は右の1より上ではないので偽になります。
a = 2
b = 1
if a > b:
print('aはbより上です。')
上記のコードを実行すると結果は「aはbより上です。」になります。
aは2で、bは1「2 > 1」は真になるからです。
a = 0
b = 1
if a > b:
print('より上')
else:
print('aはbより上ではありません。')
上記のコードを実行すると「aはbより上ではありません。」と表示されます。
aは0、bは1で、「0 > 1」は偽になるからです。
aがb以上(>=)
aがb以上かどうかチェックする演算子は以上(>=)になります。
a >= b
この演算子はaがb以上ならTrue(真)になります。
つまり「2 >= 2」や「3 >= 2」は真です。
逆に「1 >= 2」などは偽になります。
a = 2
b = 2
if a >= b:
print('aはb以上です。')
上記のコードを実行すると「aはb以上です。」と表示されます。
これはaが2で、bが2なので「2 >= 2」になって真になるからです。
a = 1
b = 2
if a >= b:
print('以上')
else:
print('aはb以上ではありません。')
上記のコードを実行すると「aはb以上ではありません。」と表示されます。
これはaが1で、bが2なので「1 >= 2」になって、結果は偽になるからです。
そのためelseのprintが実行されます。
Pythonのif文を使った実践的コード
Pythonのif文を使った実践をやってみたいと思います。
FizzBuzz

FizzBuzzとは1から100までの数字を表示するプログラムです。
表示するときに数が3の倍数であれば「Fizz」、5の倍数であれば「Buzz」、両方の倍数(15の倍数)であれば「FizzBuzz」と出力します。
コードとしては以下になります。
for i in range(1, 101):
if i % 15 == 0:
print('FizzBuzz', i)
elif i % 5 == 0:
print('Buzz', i)
elif i % 3 == 0:
print('Fizz', i)
else:
print(i)
上記のコードを実行すると以下のような結果になります。
1
2
Fizz 3
4
Buzz 5
Fizz 6
7
8
Fizz 9
Buzz 10
11
Fizz 12
13
14
FizzBuzz 15
16
17
Fizz 18
19
Buzz 20
...
このプログラムで使っているのはfor文とif文と剰余演算です。
for文については以下の記事を参照してください。
- TODO:for文
if文については本記事で解説しています。
剰余演算については以下の記事を参照してください。
- TODO:剰余演算
じゃんけんプログラム
Pythonのif文を使った実践的なプログラムとしては「じゃんけんプログラム」が挙げられます。
サンプルコードは以下です。
# 乱数を使うライブラリをインポート
import random
# 無限ループ
while True:
# プレイヤーのじゃんけんの手
# g ... グー
# c ... チョキ
# p ... パー
try:
hand = input('(g,c,p) > ')
except KeyboardInterrupt:
# 終了するにはCtrl+Cを押す
break
# CPUのじゃんけんの手
cpu = random.choice('gcp')
if hand == 'g':
if cpu == 'g':
print('あいこ')
elif cpu == 'c':
print('勝ち')
elif cpu == 'p':
print('負け')
elif hand == 'c':
if cpu == 'g':
print('負け')
elif cpu == 'c':
print('あいこ')
elif cpu == 'p':
print('勝ち')
elif hand == 'p':
if cpu == 'g':
print('勝ち')
elif cpu == 'c':
print('負け')
elif cpu == 'p':
print('あいこ')
上記のコードではwhile文やinputなども使っていて、初心者の方には少し難しいと思います。
わからない所は飛ばして、if文でやってるところを見ましょう。
if hand == 'g':
if cpu == 'g':
print('あいこ')
elif cpu == 'c':
print('勝ち')
elif cpu == 'p':
print('負け')
上記ではプレイヤーのじゃんけんの手(hand)が「g」だったら、というif文です。
「g」はじゃんけんの「グー」のことです。
「c」はじゃんけんの「チョキ」で「p」はじゃんけんのパーです。
CPUの手はcpuです。
handがgでcpuもgだったら「グー対グー」で「あいこ」になります。
handがgでcpuがcだったら「グー対チョキ」でプレイヤーの勝ちです。
handがgでcpuがpだったら「グー対パー」でプレイヤーの負けです。
こんな感じでhandがcやpの時もif文で分岐します。
これがじゃんけんプログラムの実装の一例です。
if文はどの言語が発祥なのか?
Pythonのif文を解説してきましたが、このif文って何の言語が初出なのでしょうか?
調べてみたところ、どうやらFortran(フォートラン、1957年)ですでにif文が実装されていたようです。
Fortranのif文は以下のようなコードでした。
IF (X .GT. 0) GOTO 100
条件式とGOTO文を組み合わせて使う形式で、条件が真の場合はGOTOして行に飛びます。
Pythonにはgoto文はありませんが、Pythonだと以下のようなコードになるでしょう。
X = 1
if X > 0:
print('gt')