1. ホーム
  2. 個人向けサービス
  3. キカガク技術ブログ
  4. 【Python 入門】条件分岐の基本である if 文の使い方をわかりやすく解説!else/elif も紹介
2021年5月14日

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

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

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

今回は Python でよく使われる if 文の基本を解説します!


プログラミングの力を本当に実感できるのは、コンピューターに「状況に応じた判断」をさせられるようになった時です。

例えば、クイズに正解した時に『正解!』と表示してスコアに10点加える。そうでなければ、『残念!』と表示する」といった処理です。

そのための最も基本的で強力なツールが、今回解説するif文です。if文をマスターすれば、面倒な手作業を自動化したり、ユーザーの操作に反応するアプリケーションを作ったりと、あなたの作れるプログラムの世界が一気に広がります。

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

実行環境

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

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

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

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

出典:2.7. 制御構文|Chainer Tutorial

if 文の基本構文

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

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

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

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

補足

インデントは半角スペース 4 つが一般的です!

if 文の使用例

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

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

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

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

# 起床時間の設定 wake_up_time = 7 # 条件分岐の構文 if wake_up_time == 7: print('朝ごはんを食べる')
朝ごはんを食べる

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

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

# 起床時間の設定 wake_up_time = 8 # 条件分岐の構文 if wake_up_time == 7: print('朝ごはんを食べる')
# 何も表示されない

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

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

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

この単純なif文こそ、自動化への第一歩です。プロの現場では、この仕組みを使って何千ものデータの中から特定の条件に合うものだけを瞬時に見つけ出す、といった処理を自動化し、膨大な手作業の時間を節約しています。

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

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

else 節を使った構文

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

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

else の使用例

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

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

    処理:朝ごはんを食べる

  • 条件2
    それ以外の場合

    処理:朝ごはんを食べない
# 起床時間の設定 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 とは(もし〇〇ではなく〇〇の場合)

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

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

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

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
    それ以外の場合

    処理:何も食べない
# 起床時間の設定 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 の構文を追加します。

# 起床時間の設定 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 時に起きたという条件が一致していた「夜ごはんを食べる」が出力されました。

「なぜ動かない?」と1人で悩む時間を減らしたい方へ

ifとelifで特定の条件を指定した後、最後にelseを使うことで、「それ以外の全てのケース」を漏れなく処理できます。

基本は理解できた、でもここから応用に進むにつれて、「もしエラーでつまずいてしまったら…」と不安に思うことはありませんか?

プログラミング学習では、一人で悩む時間が挫折の大きな原因になります。

キカガクのAI・データサイエンス人材育成コースなら、プロの講師にいつでも質問し放題なのはもちろん、同じ目標を持つ受講生仲間とコミュニティで相談し合うこともできます。

一人で悩む時間をなくし、仲間と共に最短ルートで成長しませんか?まずは無料説明会で、充実の学習環境について話を聞いてみませんか?

入れ子構造の if 文

これまで学んだif, elif, elseで、ほとんどの条件分岐は作成できます。しかし、プロの現場では「ある条件を満たした上で、さらに細かい条件で処理を分けたい」という場面が出てきます。

そんな時に使うのが「入れ子構造のif文」です。

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

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

こういった場合は 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
    それ以外の場合

    処理:何も食べない
# 起床時間の設定 wake_up_time = 7 # お腹が空いているかどうか is_hungry = True # 条件分岐の構文 if wake_up_time == 7: if is_hungry == True: print('朝ごはんを食べる') else: print('朝ごはんを食べない') else: print('何も食べない')
朝ごはんを食べる

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

# 起床時間の設定 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 ではない場合に「何も食べない」と表示されることを確認します。

# 起床時間の設定 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 行で書くときの構文

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

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

# 起床時間の設定 wake_up_time = 7 print('朝ごはんを食べる') if wake_up_time == 7 else print('朝ごはんを食べない')
朝ごはんを食べる

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

# 起床時間の設定 wake_up_time = 8 print('朝ごはんを食べる') if wake_up_time == 7 else print('朝ごはんを食べない')
朝ごはんを食べない

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

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

実際には「Aが〇〇である」という1つだけの条件だけではなく、もっと複雑な条件を使用することが多いですよね。

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

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

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

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

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

    処理:朝ごはんを食べる
  • 条件 2
    それ以外の場合

    処理:朝ごはんを食べない
# 起床時間の指定 wake_up_time = 7 # お腹が空いているかどうか is_hungry = True # and による複数条件の指定 if wake_up_time == 7 and is_hungry == True: print('朝ごはんを食べる') else: print('朝ごはんを食べない')
朝ごはんを食べる

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

# 起床時間の指定 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時以外に起床してお腹が空いていない

    処理:朝ごはんを食べない
# 起床時間の指定 wake_up_time = 7 # お腹が空いているかどうか is_hungry = False # and による複数条件の指定 if wake_up_time == 7 or is_hungry == True: print('朝ごはんを食べる') else: print('朝ごはんを食べない')
朝ごはんを食べる

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

# 起床時間の指定 wake_up_time = 8 # お腹が空いているかどうか is_hungry = False # and による複数条件の指定 if wake_up_time == 7 or is_hungry == True: print('朝ごはんを食べる') else: print('朝ごはんを食べない')
朝ごはんを食べない

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

独学でのエラー解決に悩んでいる方へ

ここまで条件が複雑になるとif文も長くなる、ということがわかると思います。

また、前で説明したように実務で活用する上で、特にチームでの開発などではコードの読みやすさは重要になってきます。

if文の組み合わせが複雑になると、ちょっとしたミスでエラーが出やすくなります。

キカガクのAI・データサイエンス人材コースなら、プロの講師にいつでも質問し放題。

「なぜ動かないんだろう…」と一人で悩む時間をなくし、最短ルートで成長しませんか?

長くなりすぎた 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, elif, elseを組み合わせることで、プログラムに複雑なルールを教え、状況に応じた判断をさせられるようになりました。


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

この強力な「条件分岐」のスキルを使い、実際に自分だけのアプリやデータ分析レポートといった成果物を作成したいと思いませんか?

キカカクのAI・データサイエンス人材育成コースでは、今回学んだような基礎知識を応用し、データに基づいた意思決定ができるAIアプリや分析レポートの作成までを、プロの講師が徹底的にサポートします。

学んだ知識を「本物のスキル」に変える、次の一歩を踏み出してみましょう。

まずは無料説明会で話を聞いてみませんか?

⇩ ⇩ ⇩ ⇩

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

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

参考リンク

参考 | Python 3.7.10 ドキュメント

参考 | Chainer チュートリアル

SHARE




キカガクラーニング

AI/データサイエンス学びはじめの方におすすめの記事

未経験からAI人材 無料説明会に参加

未経験からAI人材 無料説明会に参加