Pythonでif文(条件分岐)を使った書き方。基礎から応用までわかりやすく解説。

2021.10.26

2022.02.02

Fabeee社員ブログ


こんにちは!FabeeeのPythonエンジニア、凛子です。
今回のトピックは「Pythonでの条件分岐」です。
条件によって処理を変える、というのはプログラミングではよくある場面ですね。
そんな時に使える条件分岐の方法についてご紹介していきます。

基本の条件分岐:if, elif, else


条件で処理を場合わけする場合はif文を使います。

if

tom_age = 20
if tom_age >= 20:
    print('お酒が飲めます')

>>> お酒が飲めます

jerry_age = 19
if jerry_age >= 20:
    print('お酒が飲めます')

>>> 

成人判定をする処理です。
トムの年齢は20なので”お酒が飲めます”が出力されますが、ジェリーの年齢は19なので出力がなされません。
このように「XXの場合にYYする」を実現するのがifです

elif, else

では「Aの時はこう、Bの時はこう、Cの時は、、、」と複数の場合わけをしたい時はどうしたらよいでしょうか。
elif, elseを使います。

age = 19
if age >= 20: # 条件1
    print('お酒が飲めます')
elif age == 19: # 条件2:条件1にあてはまらなかった場合にのみ判定される
    print('お酒が飲めるまであと一年です')
elif age == 18: # 条件3:条件2にあてはまらなかった場合にのみ判定される
    print('お酒が飲めるまであと二年です')
else: # ここまでの全ての条件にあてはまらなかった場合に実行される
    print('飲酒が禁止されています')

>>> お酒が飲めるまであと一年です

elif, elseは省略することも勿論可能ですが、このように複数の場合わけをするパターンは多いと思います。
elifはいくつも連ねて書くことができますが、elseはひとつのif文につき一回しか使うことができません。

他の言語ではswitch文というものを使って上記のような場合わけ処理を行うこともできますが、Pythonにはswitch文がありません
なので上記のようにif-elif-elseでパターンを書き出していきます。

ifで使える演算子


上記の例では条件判定に>=, ==を使っていました。
この他にも、if文で使える演算子は以下のようなものがあります。

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 in y yの中にxが含まれている
x not in y yの中にxが含まれていない
x is y xとyが同じオブジェクトである
x is not y xとyが同じオブジェクトでない

in, isについてはイメージがしにくいと思うので、それぞれ具体的な例をみてみましょう。

in

name = 'Tom'
if 'T' in name:
    print('Tが入っています')

>>> Tが入っています

name_list = ['Tom', 'Jerry']
if 'Butch' not in name_list:
    print('Butchは入っていません')
elif 'Tom' in name_list:
    print('Tomが入っています')

>>> Tomが入っています

 

is

hoge = None
if hoge is None:
    print('Noneです')
elif hoge is not None:
    print('Noneではありません')

Noneです

“何もしない”をする:pass

if文ではなんと「何もしない」ということをすることができます。

name_list = ['Tom', 'Jerry']
if len(name_list) == 0:
    print('リストは空です')
else:
    pass # 何もしない

このpassという小さな4文字には一見あまり意味がないように思われますが、実際のプログラミングでは意外と使われます。

筆者がよく使うパターン①: 何もしないことを明示する
これが一番多いパターンかと思います。
プログラムを書いていると「この場合は何もしない」という状況は往々にしてあります。
そんな時に何も書かないのではなく、「ここは何もしませんよ」というのをあえて明示してあげる使い方です。
// do nothingとコメントを書いたりする言語もありますが、そのような感覚です。

if hoge == piyo:
    # 何かしらの処理1
    # 何かしらの処理2
    # .....
else:
    pass # elseでは何もしないことを高らかに宣言

筆者がよく使うパターン②: 文法的に必要
関数は定義しなければならないが、中身は書く必要がない、、、といった時などにpassを使います。
defやif文の中身は省略できないため、何かしらを書かないとPythonの文法としてアウトなのです。

def hoge(): 
    pass # 処理を書く必要はないけど何か書かないとエラーになるのでpass

筆者がよく使うパターン③: IDEに怒られないためにとりあえず書いとく
関数を書こう!if文を書こう!と思いコーディングをしている途中、IDEに「文法が違うよ!」と怒られることがあります。
上にも書きましたが、defやifを書いたら中に何かしらを書かないと文法エラーになります。
「今書いてるから!これからちゃんと処理書くから!そんなすぐ怒らんといて!」という時にとりあえずpassを書いてIDEのエラーを黙らせることもできます。

if hoge == piyo:
    pass
    # とりあえずpassと書いてからここは何したらいいんだっけ、、、と考える
else:
    pass
# とりあえずpassと書いてから考える

三項演算子


三項演算子というものを使えばif文を一行で書くこともできます。

age = 19
# 条件にあてはまる時の値 if 条件 else 条件にあてはまらない時の値
result = 'お酒が飲めます' if age >= 20 else '飲酒は禁止されています'
print(result)

>>> 飲酒は禁止されています

ちょっとした条件分岐が一行でサッと書けますね。
三項演算子を使うと、↓のようなif文を短く記述することができます。

number = 1

# ifを使った書き方
if number % 2 == 0:
    result = '偶数'
else:
    result = '奇数'
print(result)

>>> 奇数

# 三項演算子を使った書き方
result = '偶数' if number % 2 == 0 else '奇数'
print(result)

>>> 奇数

おわりに

様々な条件分岐方法をご紹介してきましたが、いかがでしたでしょうか。
この記事がみなさまのプログラミングの参考になれば幸いです!

この記事の監修者:杉森由政

この記事の監修者:杉森由政

2018年2月Fabeee株式会社CTOに就任。現在は、新規事業開発部門の責任者を務めるともに、AIやブロックチェーンなどの先端技術を用いた研究開発も担当。また広島大学との連携研究においては、生体データを解析する人工知能および解析アルゴリズムの研究開発にも携わるなど、多岐に渡り活躍をしている。
>>プロフィール情報