プログラミングの基本である、条件分岐のif文について紹介していきます。
本記事はこんな方におすすめです。


本記事の内容
- 真偽について
- 比較演算子
- 基本的書き方
- 比較演算子
- 条件を複数使う
- 比較演算子の省略
- 1行での記述
- passの使い方
- 文字列や配列(list, tuple)を使う場合
- 関数を使う場合
pythonのif文は色々な書き方があるので、本記事の内容を知っておくと他の人のコードを見て、なんだこれ?とはならないレベルにまで習得できます。
python入門 基礎まとめも参考にしてください。
目次
真偽
if文では、条件が真(正しい)か偽(正しくない)によって、処理が実行されます。
真偽はTrue/Falseで表されます。
if文の一番シンプル書き方は次のようになります。
インデント(字下げ)は「タブ」若しくは「半角スペース4つ」を使います。

*他の書き方はあとでしっかり説明していきます。
条件に、True/Falseを入れて動かしてみます。
# 処理される
if True:
print('Trueの時')
# 処理されない
if False:
print('Flaseの時')
Trueの時
表示されたのは、Trueの時だけですね。
これが条件分岐の特徴で、条件がTrueの時のみ実行します。
メモ
print('文字')で、文字を出力することができます。
文字はコーテーション(')か、ダブルコーテーション(")で囲いましょう。
print(変数名)で、変数の値の表示もできます。
比較演算子
次に、True/Flaseと判定する条件で使う比較演算子についてです。
例えば、「10以上」「10未満」「10と等しい」などです。
これらは、下記の比較演算子で表すことができます。
| 演算子 | Trueの時 | Falseの時 |
|---|---|---|
| x == y | xとyが等しい | xとyが等しくない |
| x > y | xがyより大きい | xがy以下 |
| x >= y | xがy以上 | xがy未満 |
| x < y | xがy未満 | xがy以上 |
| x <= y | xがy以下 | xがyより大きい |
| x != y not x == y |
xとyが等しくない | xとyが等しい |
| x is y | xとyのオブジェクトが同じもの | xとyのオブジェクトが違うもの |
| x is not y not x is y |
xとyのオブジェクトが違うもの | xとyのオブジェクトが同じもの |
| x in y | xがyに含まれている | xがyに含まれていない |
| x not in y not x in y |
xがyに含まれていない | xがyに含まれている |
*オブジェクト:クラス、関数など取り扱っているもの
使ってみる
例えば、aという変数を1つ目と5つ目の比較演算子を試してみます。
a = 10
if a==10:
print('aは10です。')
if a!=1:
print('aは以外です。')
aは10です。 aは以外です。
2つとも条件がTrueになるので、文字が出力されています。
条件をprint文で確認することができます。
print(a==10)
Trueと表示されます。
1-6の他の演算子も試してみてください。
オブジェクトの条件判定
これは、今わからない場合は、頭の隅にでも置いておいてください。
変数以外にもオブジェクトの一致を見る時があります。
例えば、次の2つのコードを比べてみましょう。[10]というlist型を判定しています。
a = [10]
b = [10]
if a is b:
print('aとbは一緒です。')
a = [10]
b = a
if a is b:
print('aとbは一緒です。')
どちらが、「aとbは一緒です。」と出力されるでしょうか?
実際に動かしてみてください。
答えは、2つ目の方です。
2つ目の方は、b=a(bにaが入っている)で、オブジェクトが同じだということになります。
値が同じというのとは別の意味になります。
9,10つ目のinの使い方は、あとで「文字列や配列」のところで紹介します。
基本的使い方
さて、やっとここでif文の基本的な使い方を紹介していきます。
3つと1つおまけがあります。
if 条件
先ほども出てきましたが、1つ目
条件がTrueの時に実行されます。

a = 5
if a<10:
print('aは10未満')
aは10未満
if 条件 else
2つ目。条件がTrueの時とFalseの時の処理を分けて実行。

# if else
a = 11
if a<10:
print('aは10未満')
else:
print('aは10以上')
aは10以上
if 条件 elif 条件 ... else
3つ目。条件を複数入れる場合。

a = 5
if a<10:
print('aは10未満')
elif a>=10:
print('aは10以上')
aは10未満
elif 条件はいくつ足してもOKです。
elseは不要であれば省略ができます。
ここに注意
条件は上から優先されます。
下記例を見てみましょう。
a = 5
b = 5
if a<10:
print('aは10未満')
elif b<10:
print('bは10未満')
else:
print('a,bは10以上')
aは10未満
b<10の条件にも一致しますが、a<10の条件が優先されて実行されます。
複数の条件をそれぞれ、判断したい場合は、if文を次のように分けましょう
a = 5
b = 5
if a<10:
print('aは10未満')
if b<10:
print('bは10未満')
aは10未満 bは10未満
それぞれの条件でしっかり処理がされています。
ifの入れ子
ifは入れ子にすることができます。

a = 5
b = 5
if a<10:
if b<10:
print('aは10未満で、bも10未満')
aは10未満で、bも10未満
メモ
他の言語をされたことがある方は、VBのselect case、Cのswitch caseはないの?
と思ったかもしれませんが、結論、ないです。
条件を複数使う
条件は複数同時に設定することができます。
例えば、条件が「20以上かつ30未満」というような場合です。
and orについて
条件を複数使う場合は、andとorを使います。
if (条件1) and (条件2):
といった使い方です。
この時、条件はかっこ()で囲ってあげる必要があります。
条件1 and 条件2の場合。両方がTrueの時のみTrueになります。
| 条件1 | 条件2 | 結果 |
|---|---|---|
| True | True | True |
| True | False | False |
| False | True | False |
| False | False | False |
条件1 or 条件2の場合。どちらかがTrueであればTrueになります。
| 条件1 | 条件2 | 結果 |
|---|---|---|
| True | True | True |
| True | False | True |
| False | True | True |
| False | False | False |
使ってみる
入れ子の時に使ったコードを変更します。
Before
a = 5
b = 5
if a<10:
if b<10:
print('aは10未満で、bも10未満')
After
a = 5
b = 5
if (a<10) and (b<10):
print('aは10未満で、bも10未満')
条件2つを満たすときに、処理がされるので、同じ処理になりました。
他にも、一つの値を複数の条件で分ける時に使います。
a = 11
if a<10:
print('aは10未満')
elif (a>=10) and (a<20):
print('aは11以上、20未満')
elif (a>=20) and (a<30):
print('aは20以上、30未満')
else:
print('aは30以上')
aは11以上、20未満
比較演算子の省略
ここからが、少し特徴的な使い方になります。
比較演算子を使わなくても、TrueやFalseとなる場合があります。
| 対象 | Trueになる | Falseになる |
|---|---|---|
| 数値 | 0以外 | 0 |
| 文字列 | 1文字以上ある | 1文字もない |
| list、dict | データが入っている | データが空 |
| オブジェクト | Noneじゃない | None |
数値を例に見てみましょう。
a = 0
if a:
print('aは0ではありません。')
else:
print('aは0です。')
aは0です。
if a:としただけで、条件分岐で処理ができています。
list(配列データ)も見てみます。
list_data = [1,2,3]
if list_data:
print(sum(list_data))
else:
print('データ読み込まれていません。')
6
データが読み込まれてたら、処理するという場合などで使えます。
1行での記述
次のように、if else文は1行で表すことができます。

普通に書いた場合と比べてみましょう。
普通にif文を使った場合
a = 0.7
result = ''
if a > 0.5:
result = '陽性'
else:
result = '陰性'
print(result)
陽性
1行にした場合
a = 0.7 result = '陽性' if a > 0.5 else '陰性' print(result)
陽性
passの使い方
if文では処理の記述を省略するにはpassを使う必要があります。
というのも他の言語では、処理は書かず省略できますが、pythonではできません。
例えば、下記コードを実行します。
a = 0.7
result = ''
if a > 0.5:
result = '陽性'
else:
# 処理検討中
print(result)
IndentationError: expected an indented block
というふうにエラーが出ます。
インデントエラーですが、elseの後に処理がないので怒られます。
こういう時は、passと入れると解決します。
a = 0.7
result = ''
if a > 0.5:
result = '陽性'
else:
# 処理検討中
pass
print(result)
文字列や配列(list, tuple)
文字列や配列では比較演算子の「in」を使うことが多いです。
x in y で xがyの中に含むかどうかを判断することができます。
文字列の場合
a = 'りんごが食べたい'
if 'りんご' in a:
print('りんごを含む')
if 'みかん' in a:
print('みかんを含む')
りんごを含む
listの場合
a = ['りんご', 'みかん', 'ぶどう']
if 'りんご' in a:
print('りんごを含む')
if 'スイカ' in a:
print('スイカを含む')
りんごを含む
関数を使う場合
長くなりましたが、これで最後になります。
条件のところは、比較演算だけでなく、関数とかでも利用できます。
先ほど使った下記のコードを変更していきます。
Before
a = 0.7
result = ''
if a > 0.5:
result = '陽性'
else:
result = '陰性'
print(result)
After
def judge(value):
if a > 0.5:
return True
else:
return False
a = 0.7
result = ''
if judge(a):
result = '陽性'
else:
result = '陰性'
print(result)
判定するjudgeという関数を用意して、if文の条件の箇所に使っています。
コード量は多くなりますが、judgeの処理が複雑になるときは、比較演算子では対応できないので、関数化することで条件に使いましょう。
以上が、if文の使い方です。
これで、他の人のコードに右往左往されることはありません。