【Python 入門】条件分岐の基本である if 文の使い方をわかりやすく解説!else/elif も紹介

機械学習の講師をしている神部です。

Python を学びはじめた時に〇〇の場合といったような条件分岐の実装をしたいといったことがあると思います。

今回は Python でよく使われる if 文の基本を解説します!
if 文は Python に限らずプログラミングにおいて非常に重要な構文になります。

この記事では Python の if 文はどのように書くのか?どのように使うのか?実際のコード例も用いてわかりやすく解説します!

実行環境

この記事では Python の実行環境を簡単に用意できる Google Colaboratory を使用して解説しています。
Google Colaboratory について詳しくは以下の記事をご覧ください!

if 文とは(もし〇〇なら)

if 文は条件分岐の設定です。「もし〇〇なら△△をする」といった処理をしたい時に使います。
具体的には「条件」と「条件が満たされた時の処理」で構成されています。

Python での if 文の基本的な書き方は下図のようになります。

Python の if 文紹介
出典:2.7. 制御構文|Chainer Tutorial

if 文の基本構文

if 文の基本構文
if 条件式:
    処理 1

  • 条件式が真 (True) の場合、処理 1 が実行される
  • 条件式が偽 (False) の場合、処理 1 はスキップされる

まずは if を書き、「条件式」に「もし〇〇の場合」といった条件を記述し、その下に条件を満たしたときの処理を書きます。

また Python の if 文では、以下の 2 点を必ず押さえておきましょう!

  • 条件式の後に :(コロン) を付けること
  • 処理を書く際は、インデントと呼ばれる半角スペースを入れること(字下げ)

補足

インデントは半角スペース 4 つが一般的です!
参考 はじめに — コードのレイアウト – インデントpep8-ja 1.0 ドキュメント

if 文の使用例

今回は、「もし 7 時に起きたら」という条件を満たす時に「朝ごはんを食べる」と出力する処理の実装をしてみましょう。


条件 1
7 時に起床した場合

処理:朝ごはんを食べる(と出力する)

画面に出力する場合は Python では print() 関数を使用します。コードは以下の通りです。

if 文による条件分岐
# 起床時間の設定
wake_up_time = 7

# 条件分岐の構文
if wake_up_time == 7:
    print('朝ごはんを食べる')
実行結果
朝ごはんを食べる

「朝ごはんを食べる」と出力されましたね。起床時間 (wake_up_time) が 7 だったので画面に「朝ごはんを食べる」と出力されました。

では、条件が満たされない時はどうなるでしょうか。

if 文による条件分岐
# 起床時間の設定
wake_up_time = 8

# 条件分岐の構文
if wake_up_time == 7:
    print('朝ごはんを食べる')
実行結果
# 何も表示されない

このようにもし〇〇ならといった条件が満たされない時には print(‘朝ごはんを食べる’) の処理はされていないことがわかります。

Python では【条件式】と【処理】をセットで書くということを覚えておきましょう!

もし上記の例で === がよくわからなかった場合は、プログラミングの「変数」について学ぶといいでしょう。
変数については詳しくは以下の記事でまとめているのでぜひこちらもご覧ください。

else とは(〇〇ではない場合)

先ほどは「もし〇〇なら〇〇をする」といった処理を書きました。そしてその条件を満たさなければ何も処理がされないといったことをお伝えしました。
では「もし〇〇ではない場合に△△の処理をしたい」という場合にはどうすればいいでしょうか。
このような if の条件を満たさない時の処理を設定したい場合は、else といった構文を使います。

else 節を使った構文

else 節を使った構文
if 条件式:
    処理1
else:
    処理2

  • 条件式が真 (True) の場合、処理 1 が実行される
  • 条件式が偽 (False) の場合、処理 2 が実行される

このときの注意点としては、else の場合には条件式がないということです。

else の使用例

ではさっそく先ほどの if 文に else を使って条件分岐の処理を実装してみましょう!
以下のような条件を、else を用いてコーディングしていきます。


条件 1
7 時に起床した場合

処理:朝ごはんを食べる

条件 2
それ以外の場合

処理:朝ごはんを食べない

else 節を使った構文
# 起床時間の設定
wake_up_time = 8

# 条件分岐の構文
if wake_up_time == 7:
    print('朝ごはんを食べる')
else:
    print('朝ごはんを食べない')
実行結果
朝ごはんを食べない

この場合では wake_up_time が 7 ではないので最初の if での処理は実行されず「朝ごはんを食べない」という else の処理が実行されました。

念のために wake_up_time が 7 の場合に「朝ごはんを食べる」と表示されるか確認しましょう。

条件式が実行されるか確認
# 起床時間の設定
wake_up_time = 7

# 条件分岐の構文
if wake_up_time == 7:
    print('朝ごはんを食べる')
else:
    print('朝ごはんを食べない')
実行結果
朝ごはんを食べる

このように if と else を使って条件分岐を実装できます。

elif とは(もし〇〇ではなく〇〇の場合)

では例えば以下のような処理を実装したい場合はどうすればいいでしょうか。

  • 「7 時に起きたら朝ごはんを食べる」
  • 「12 時に起きたら昼ごはんを食べる」
  • 「それ以外の時間に起きたら何も食べない」

そのような時には elif 節という構文を使います。
if と else の間に入るのが elif といったイメージです。

elif 節を使った構文

elif 節を使った構文
if 条件式1:
    処理1
elif 条件式2:
    処理2
else:
    処理3

整理すると以下のようになります。

  • 条件式 1 が真 (True) の場合、処理 1 が実行される
  • 条件式 1 が偽 (False) で条件式 2 が真 (True) の場合、処理 2 が実行される
  • 条件式 1, 2 共に偽 (False)の場合、処理 3 が実行される

elif は複数追加することができます。

elif の使用例

では先ほどの起きた時間によって出力を変える処理を書いてみましょう。


条件 1
7 時に起床した場合

処理:朝ごはんを食べる
条件 2
12 時に起床した場合

処理:昼ごはんを食べる

条件 3
それ以外の場合

処理:何も食べない

if 文による条件分岐
# 起床時間の設定
wake_up_time = 12

# 条件分岐の構文
if wale_up_time == 7:
    print('朝ごはんを食べる')
elif wake_up_time == 12:
    print('昼ごはんを食べる')
else:
    print('何も食べない')
実行結果
昼ごはんを食べる

このように wake_up_time が 12 の場合は if の処理は実行されず、elif の条件と一致していたので else の処理がたどり着く前に「昼ごはんを食べる」といった処理が実行されました。

また、例えば 18 時に起きたら夜ごはんを食べるといった処理を追加したい場合は同じように elif の構文を追加します。

if 文による条件分岐
# 起床時間の設定
wake_up_time = 12

# 条件分岐の構文
if wale_up_time == 7:
    print('朝ごはんを食べる')
elif wake_up_time == 12:
    print('昼ごはんを食べる')
elif wake_up_time == 18:
    print('夜ご飯を食べる')
else:
    print('何も食べない')
実行結果
夜ご飯を食べる

18 時に起きたという条件が一致していた「夜ごはんを食べる」が出力されました。

入れ子構造の if 文

条件を満たしてなおかつ次の条件分岐をする場合はどのように書けばいいでしょうか。

例えば以下のような場合です。

  • もし 7 時に起床してお腹が空いていれば朝ごはんを食べる
  • もし 7 時に起床してお腹が空いていなければ朝ごはんを食べない。
  • それ以外の場合は何も食べない

こういった場合は if 文を入れ子構造とすることで実装できます。

入れ子構造の if 文の書き方

入れ子構造の if 文の書き方は以下のように書けます。

入れ子構造の if 文
if 条件式1:
    if 条件式2:
        処理1
    else:
        処理2
else:
    処理3

  • 条件式 1 が真 (True) で条件式 2 も真 (True) の場合、処理 1 が実行される
  • 条件式 1 が真 (True) で条件式 2 が偽 (False) の場合、処理 2 が実行される
  • 条件式 1 が偽 (False) の場合、処理 3 が実行される

入れ子構造の if 文の使用例

では先ほどの条件で書いてみましょう。


条件 1
7 時に起床してお腹が空いている場合

処理:朝ごはんを食べる
条件 2
7 時に起床してお腹が空いていない場合

処理:朝ごはんを食べない

条件 3
それ以外の場合

処理:何も食べない

入れ子構造の if 文
# 起床時間の設定
wake_up_time = 7

# お腹が空いているかどうか
is_hungry = True

# 条件分岐の構文
if wake_up_time == 7:
    if is_hungry == True:
        print('朝ごはんを食べる')
    else:
        print('朝ごはんを食べない')
else:
    print('何も食べない')
実行結果
朝ごはんを食べる

is_hungry が False の場合、「朝ごはんを食べない」と表示されるかどうか確認します。

入れ子構造の if 文
# 起床時間の設定
wake_up_time = 7

# お腹が空いているかどうか
is_hungry = False

# 条件分岐の構文
if wake_up_time == 7:
    if is_hungry == True:
        print('朝ごはんを食べる')
    else:
        print('朝ごはんを食べない')
else:
    print('何も食べない')
実行結果
朝ごはんを食べない

そもそも wake_up_time が 7 ではない場合に「何も食べない」と表示されることを確認します。

入れ子構造の if 文
# 起床時間の設定
wake_up_time = 8

# お腹が空いているかどうか
is_hungry = True

# 条件分岐の構文
if wake_up_time == 7:
    if is_hungry == True:
        print('朝ごはんを食べる')
    else:
        print('朝ごはんを食べない')
else:
    print('何も食べない')
実行結果
何も食べない

このように条件によって処理を変えることができます。
プログラミングでよく使うものになるのでこのあたりしっかりと押さえておきましょう!

1 行で if 文を書く方法(三項演算子)

if 文は 1 行で書くこともでき、この構文のことを三項演算子といいます。

if 文を 1 行で書くときの構文

if 文を 1 行で書くときの構文
処理1 if 条件式 else 処理2

  • 条件式が真 (True) の場合、処理 1 が実行される
  • 条件式が偽 (False) の場合、処理 2 が実行される

if 文を 1 行で書くときの使用例

1 行で if 文を書く方法
# 起床時間の設定
wake_up_time = 7

print('朝ごはんを食べる') if wake_up_time == 7 else print('朝ごはんを食べない')
実行結果
朝ごはんを食べる

else の方も実行されるか確認しましょう。

1 行で if 文を書く方法
# 起床時間の設定
wake_up_time = 8

print('朝ごはんを食べる') if wake_up_time == 7 else print('朝ごはんを食べない')
実行結果
朝ごはんを食べない

きちんと実行されていますね!

if 文で複数の条件(かつ、または)を指定 : and, or

if 文の中では条件A を満たし、かつ条件B を満たした場合に処理を実行するなど指定することができます。

if 文で複数の条件を指定するときの構文

if 文で複数の条件を指定 (and)
if 条件式1 and 条件式2:
    処理1
else:
    処理2
  • 条件式 1 が真 (True) かつ、条件式 2 が真 (True) の場合、処理 1 が実行される
  • 条件式 1、条件式 2 のどちらかもしくは両方が偽 (False) の場合、処理 2 が実行される
if 文で複数の条件を指定 (or)
if 条件式1 or 条件式2:
    処理1
else:
    処理2
  • 条件式 1、条件式 2 のどちらか、もしくは両方が真 (True) の場合、処理 1 が実行される
  • 条件式 1、条件式 2 の両方が偽(False)の場合、処理 2 が実行される

複数の条件を指定する際の使用例

条件 1
7 時に起床してお腹が空いている場合

処理:朝ごはんを食べる

条件 2
それ以外の場合

処理:朝ごはんを食べない

複数の条件を指定する if 文
# 起床時間の指定
wake_up_time = 7

# お腹が空いているかどうか
is_hungry = True

# and による複数条件の指定
if wake_up_time == 7 and is_hungry == True:
    print('朝ごはんを食べる')
else:
    print('朝ごはんを食べない')
実行結果
朝ごはんを食べる

では、朝 7 時以外に起床した場合についても実行してみましょう。

複数の条件を指定する if 文
# 起床時間の指定
wake_up_time = 8

# お腹が空いているかどうか
is_hungry = True

# and による複数条件の指定
if wake_up_time == 7 and is_hungry == True:
    print('朝ごはんを食べる')
else:
    print('朝ごはんを食べない')
実行結果
朝ごはんを食べない

このように and を使うことで複数の条件を全て満たす場合の指定を行うことができました。

では or を使用する場合についても考えてみましょう。

条件 1
7 時に起床した、またはお腹が空いている場合

処理:朝ごはんを食べる

条件 2
7時以外に起床してお腹が空いていない

処理:朝ごはんを食べない

複数の条件を指定する if 文
# 起床時間の指定
wake_up_time = 7

# お腹が空いているかどうか
is_hungry = False

# and による複数条件の指定
if wake_up_time == 7 or is_hungry == True:
    print('朝ごはんを食べる')
else:
    print('朝ごはんを食べない')
実行結果
朝ごはんを食べる

では 7 時以外に起床して、お腹も空いていない時はどうなるかを確認しましょう。

複数の条件を指定する if 文
# 起床時間の指定
wake_up_time = 8

# お腹が空いているかどうか
is_hungry = False

# and による複数条件の指定
if wake_up_time == 7 or is_hungry == True:
    print('朝ごはんを食べる')
else:
    print('朝ごはんを食べない')
実行結果
朝ごはんを食べない

このように or を使うことで片方の条件でも満たす場合の指定をおこなうことができました。

長くなりすぎた if 文を複数行で記述する方法

条件が複雑になればなるほど if 文は長くなっていき、コードが読みづらくなってしまいエラーを引き起こす原因にもなります。

以下では if 文を適切に改行することでコードを読みやすくする方法についてみていきましょう。

if 文を改行して複数行で記述

バックスラッシュ\ を使う、もしくは if 分の条件部分を括弧 () で囲むことで改行を行うことができます。

以下の場合を例に考えてみましょう。

条件 1
7 時に起床し、お腹が空いていて、朝ごはんが買ってある場合

処理:朝ごはんを食べる

条件 2
それ以外の場合

処理:朝ごはんを食べない

長い条件指定(改行なし)
# 起床時間の指定
wake_up_time = 7

# お腹が空いているかどうか
is_hungry = True

# 朝ごはんが買ってあるかどうか
is_breakfast_available = True

# and による複数条件の指定
if wake_up_time == 7 and is_hungry == True and is_breakfast_available == True:
    print('朝ごはんを食べる')
else:
    print('朝ごはんを食べない')
実行結果
朝ごはんを食べる

改行がないと条件文の構造がわかりづらくなってしまいます。

長い条件指定(バックスラッシュで改行)
# 起床時間の指定
wake_up_time = 7

# お腹が空いているかどうか
is_hungry = True

# 朝ごはんが買ってあるかどうか
is_breakfast_available = True

# and による複数条件の指定
if wake_up_time == 7 \
   and is_hungry == True \
   and is_breakfast_available == True:
    print('朝ごはんを食べる')
else:
    print('朝ごはんを食べない')
実行結果
朝ごはんを食べる

バックスラッシュを使った改行により条件部分のコードがかなりみやすくなりました!

() を使う方法についてもみてみましょう。

長い条件指定(括弧を使って改行)
# 起床時間の指定
wake_up_time = 7

# お腹が空いているかどうか
is_hungry = True

# 朝ごはんが買ってあるかどうか
is_breakfast_available = True

# and による複数条件の指定
if (
   wake_up_time == 7
   and is_hungry == True
   and is_breakfast_available == True
):
    print('朝ごはんを食べる')
else:
    print('朝ごはんを食べない')
実行結果
朝ごはんを食べる

このように適切に改行を加えることで複雑な条件指定をわかりやすくすることができますのでぜひ活用してみてください!

if 文を使えるようになってプログラミングのレベルアップをしよう!

本記事では Python の if 文について解説しました。
まとめは以下になります。

  • 「もし〇〇の場合」といった条件分岐処理を実装する時は if を使う
  • 「もし〇〇ではなく、〇〇の場合」といった条件分岐処理を実装する時は elif を使う
  • 「もしどの条件でもない場合」といった条件分岐処理を実装する時は else を使う
  • 「○○かつ○○の場合」といった複数条件を実装する時は
    and を使う
  • 「○○または○○の場合」といった複数条件を実装する時は
    or を使う
  • 複雑で長い条件を実装する時は\または() を使って適切に改行をする

if 文はプログラミングで非常に多く使われる処理です。ぜひいろいろなケースを想定しながら if 文を使ってみてマスターしましょう!

また if 文と一緒に使われる処理に、比較演算子や論理演算子などといったものがあります。

こちらも以下の記事で紹介していますのでぜひご覧ください。


もし、動画で if 文の内容を学習したい!という方は、元副社長の動画がおすすめです。

また、Python の特訓動画もあります。Python 勉強中の方は、ぜひチャレンジしてみてください!

本記事では Python における if 文の使い方をご紹介しました! Python の if 文について知りたかった人の助けになれば嬉しいです!

こちらの記事もオススメ

まずは無料で学びたい方・最速で学びたい方へ

まずは無料で学びたい方: Python&機械学習入門コースがおすすめ

Python&機械学習入門コース

AI・機械学習を学び始めるならまずはここから!経産省の Web サイトでも紹介されているわかりやすいと評判の Python&機械学習入門コースが無料で受けられます!
さらにステップアップした脱ブラックボックスコースや、IT パスポートをはじめとした資格取得を目指すコースもなんと無料です!

無料で学ぶ

最速で学びたい方:キカガクの長期コースがおすすめ

一生学び放題

続々と転職・キャリアアップに成功中!受講生ファーストのサポートが人気のポイントです!

AI・機械学習・データサイエンスといえばキカガク!
非常に需要が高まっている最先端スキルを「今のうちに」習得しませんか?

無料説明会を週 2 開催しています。毎月受講生の定員がございますので確認はお早めに!

説明会ではこんなことをお話します!
  • 国も企業も育成に力を入れている先端 IT 人材とは
  • キカガクの研修実績
  • 長期コースでの学び方、できるようになること
  • 料金・給付金について
  • 質疑応答

参考リンク

参考 Python 3.7.10 ドキュメント
参考 Chainer チュートリアル