Python

最終更新日: 2022.12.27 (公開: 2022.12.27)

Pythonのif文は条件分岐に必須!if-else文と演算子の使い方

Pythonのif文は条件分岐に必須!if-else文と演算子の使い方

Pythonの「if文」「if-else文」は、プログラミングの基本中の基本である「条件分岐」を行うために、欠かせない機能・構文です。if文を使いこなせるようになると、自由自在に処理を分岐できるようになり、高度な機能を実現できるようになります。本記事では、Pythonのif文・if-else文について、サンプルコード付きでわかりやすく解説します。

Pythonの「if文」とは?条件分岐に必須の機能

Pythonの「if文」とは?条件分岐に必須の機能

Pythonの「if文」とは、条件分岐を行うための機能です。「条件分岐」は、ある条件を指定して、条件を満たす場合・満たさない場合で処理を分けることを指します。

たとえば、「あなたはPythonを学習していますか?」という質問に対する答えは、「はい」「いいえ」の2択です。Pythonでは「はい = True」「いいえ = False」として、プログラムの処理を分岐させます。

ユーザーが入力した数値の種類に応じて、True/Falseで処理を分けるというのは、最も基本的な条件分岐のひとつです。Pythonでは以下のサンプルコードのように、if-else文を用いて記述します。

//サンプルプログラム

# coding: Shift-JIS

# ユーザーに整数値の入力を求める
while True:
  str = input("整数値を入力してください:")
  # 整数値が入力されなかった場合は繰り返す
  if str.isdecimal():
    # 整数値が入力された場合はint型に変換する
    num = int(str)
    break

# if-else文で偶数か奇数かを判別する
if num % 2 == 0:
  print(str + "は偶数です")
else:
  print(str + "は奇数です")

//実行結果

こうした条件分岐の考え方は、Python以外のあらゆるプログラミング言語でも同じように存在します。だからこそ、if-else文による条件分岐は、プログラミングの基本中の基本だといえるのです。

【基礎】Pythonのif文の基本的な使い方

【基礎】Pythonのif文の基本的な使い方

Pythonのif文は、条件分岐の種類に応じて以下3つに分類できます。本章では、それぞれの使い方について解説します。

  • if文の使い方
  • if-else文の使い方
  • if-elif-else文の使い方

if文の使い方

if文は「True」もしくは「False」の2択で処理を分岐できます。if文の基本的な構文は以下のとおりです。

if 条件式:
条件式がTrueのときに行う処理内容

重要なポイントは、条件式を満たす場合の処理内容を記述することと、そのときに「インデント」を下げることです。Pythonは、インデントによって処理のまとまりを作る言語なので、インデントを下げていないとエラーになります。なお、条件式を満たさない場合は、この処理内容は実行されません。実際に以下のサンプルコードで確認してみましょう。

//サンプルプログラム

# coding: Shift-JIS

# ユーザーに整数値の入力を求める
while True:
  str = input("整数値を入力してください:")
  # 整数値が入力されなかった場合は繰り返す
  if str.isdecimal():
    # 整数値が入力された場合はint型に変換する
    num = int(str)
    break

# if文で数値が偶数か判別する
if num % 2 == 0:
  print("偶数が入力されました")

//実行結果

上記のサンプルプログラムは、ユーザーに整数値を入力してもらい、その値が偶数の場合に「偶数が入力されました」と表示するものです。なお、最初に「while文」がありますが、これはユーザーが整数値を入力するまで処理を繰り返すためのものです。if文で「str.isdecimal関数」の戻り値を判定することで、整数値かどうかを判定しています。正しい整数値が入力されたら、if文で「num」が偶数かをチェックします。

if-else文の使い方

先ほどのif文は、条件式を満たす場合の処理を記述するためのものでした。一方「else文」は、条件式を満たさない場合の処理を記載します。else文は単独では使えないので、必ず「if-else文」とセットにして、以下の構文で使います。

if 条件式:
  条件式がTrueのときに行う処理内容
else:
  条件式がFalseのときに行う処理内容

条件を満たさない場合の処理を書く以外は、else文はif文と同じです。if文と同様に、インデントを下げる必要がある点に注意してください。if-else文の使い方を、以下のサンプルコードで確認しましょう。

//サンプルプログラム

# coding: Shift-JIS

# ユーザーに整数値の入力を求める
while True:
  str = input("整数値を入力してください:")
  # 整数値が入力されなかった場合は繰り返す
  if str.isdecimal():
    # 整数値が入力された場合はint型に変換する
    num = int(str)
    break

# if文で数値が偶数か奇数かを判別する
if num % 2 == 0:
  print("偶数が入力されました")
else:
  print("奇数が入力されました")

//実行結果

if-elif-else文の使い方

if文やif-else文は、基本的には「True」もしくは「False」の2択です。より複雑な条件分岐を行いたい場合は、「elif」文を使用します。elif文は、if文とelse文以外の選択肢を追加するためのもので、「if-elif-else文」と3つセットで使用します。if-elif-else文の構文は以下のとおりです。

if 条件式A:
  条件式AがTrueのときに行う処理内容
elif 条件式B:
  条件式BがTrueのときに行う処理内容
else:
  条件式Aと条件式Bの双方がFalseのときに行う処理内容

elif文の使い方は基本的にif文と同じですが、elif文はいくつでも並べて書けることが特徴です。実際に以下のサンプルコードで、if-elif-else文を使ってみましょう。

//サンプルプログラム

# coding: Shift-JIS

# ユーザーに整数値の入力を求める
while True:
  str = input("整数値を入力してください:")
  # 整数値が入力されなかった場合は繰り返す
  if str.isdecimal():
    # 整数値が入力された場合はint型に変換する
    num = int(str)
    break

# if文で数値がどの値の倍数かを判別する
if num % 2 == 0:
  print(str + "は2の倍数です")
elif num % 3 == 0:
  print(str + "は3の倍数です")
elif num % 5 == 0:
  print(str + "は5の倍数です")
else:
  print(str + "は2・3・5の倍数ではありません")

//実行結果

上記のサンプルプログラムは、入力した値が2・3・5のいずれの倍数であるかを調べるためのものです。3の倍数と5の倍数を調べる部分は、elif文をつなげて記述しています。いずれにも該当しない場合は、else文の処理を実行することになります。

Pythonのif文で使える「比較演算子」の一覧

Pythonのif文で使える「比較演算子」の一覧

Pythonのif文を使いこなすためには、「比較演算子」について理解しておく必要があります。比較演算子は、2つの値を比較するためのもので、その結果は「True」もしくは「False」となります。Pythonで使える比較演算子は以下10種類です。

比較演算子 概要
a == b aはbと等しい
a != b aはbと等しくない
a < b aはbより小さい
a > b aはbより大きい
a <= b aはb以下
a >= b aはb以上
a is b aはbと等しい
a is not b aはbと等しくない
a in b aはbに含まれる
a not in b aはbに含まれない

なお、「in」と「not in」については、文字列・リスト・タプルなど特殊なデータ型で使える比較演算子です。それぞれの比較演算子の使い方について、以下のサンプルコードで確認しましょう。

//サンプルプログラム

# coding: Shift-JIS

# 2つの整数値を格納するためのリストを作成する
str = [0] * 2
num = [0] * 2

# ユーザーに整数値の入力を求める
for i in range(2):
  while True:
    str[i] = input("整数値を入力してください:")
    # 整数値が入力されなかった場合は繰り返す
    if str[i].isdecimal():
      # 整数値が入力された場合はint型に変換する
      num[i] = int(str[i])
      break

# if文で数値がどの値の倍数かを判別する
if num[0] == num[1]:
  print(str[0] + "は" + str[1] + "と等しいです")
elif num[0] != num[1]:
  print(str[0] + "は" + str[1] + "と等しくありません")

if num[0] < num[1]:
  print(str[0] + "は" + str[1] + "より小さいです")
elif num[0] > num[1]:
  print(str[0] + "は" + str[1] + "より大きいです")
elif num[0] <= num[1]:
  print(str[0] + "は" + str[1] + "以下です")
elif num[0] >= num[1]:
  print(str[0] + "は" + str[1] + "以上です")

if num[0] is num[1]:
  print(str[0] + "は" + str[1] + "と等しいです")
elif num[0] is not num[1]:
  print(str[0] + "は" + str[1] + "と等しくありません")
else:
  print(str[0] + "と" + str[1] + "はいずれにも該当しない関係です")

# テスト用リストを作成する
list = [1, 2, 3]

# リスト内に「1」が含まれているか調べる
if 1 in list:
  print("リストに「1」は含まれています")
else:
  print("リストに「1」は含まれていません")

# リスト内に「100」が含まれているか調べる
if 100 not in list:
  print("リストに「100」は含まれていません")
else:
  print("リストに「100」は含まれています")

//実行結果

これらの比較演算子は、Pythonでif文を使うときに頻繁に使うので、必ず覚えておきましょう。

Pythonのif文で使える「論理演算子」の一覧

Pythonのif文で使える「論理演算子」の一覧

先ほど紹介した比較演算子に加えて、「論理演算子」についても理解しておくと、より高度な条件分岐ができます。論理演算子は、複数の条件式を組み合わせて条件を分岐させるためのもので、比較演算子と同じように「True」もしくは「False」を返します。Pythonでは、以下3つの論理演算子を使うことが可能です。

論理演算子 概要
a and b aとbの双方が真であれば「True」を返す
a or b aとbの一方が真であれば「True」を返す
not a aが偽であれば「True」を返す

双方の条件がTrueであることを求める場合は「and」で、他方がTrueであればOKな場合は「or」を使います。なお「not」は条件を否定、つまり逆にするための演算子です。たとえば「not (a % 2 == 0)」と書けば、「aは偶数ではない」すなわち「aは奇数である」ことを調べる条件式となります。詳細は以下のサンプルコードのとおりです。

//サンプルプログラム

# coding: Shift-JIS

# 2つの整数値を格納するためのリストを作成する
str = [0] * 2
num = [0] * 2

# ユーザーに整数値の入力を求める
for i in range(2):
  while True:
    str[i] = input("整数値を入力してください:")
    # 整数値が入力されなかった場合は繰り返す
    if str[i].isdecimal():
      # 整数値が入力された場合はint型に変換する
      num[i] = int(str[i])
      break

# if文で各数値が偶数か奇数かを調べる
if (num[0] % 2 == 0) and (num[1] % 2 == 0):
  print(str[0] + "と" + str[1] + "の双方が偶数です")
elif (num[0] % 2 == 0) or (num[1] % 2 == 0):
  print(str[0] + "と" + str[1] + "の一方が偶数です")
elif not (num[0] % 2 == 0) and not (num[1] % 2 == 0):
  print(str[0] + "と" + str[1] + "の双方が奇数です")
else:
  print(str[0] + "と" + str[1] + "の関係は特殊です")

//実行結果

論理演算子は、複数の条件を組み合わせて処理を分岐させる場合に、必ず使います。比較演算子と組み合わせることがほとんどなので、上記のようなサンプルプログラムで比較演算子・論理演算子の組み合わせ方を覚えておきましょう。

Pythonのif文をネストさせる方法

Pythonのif文をネストさせる方法

if文の中に別のif文を書くことを「ネスト」もしくは「入れ子」と呼びます。Pythonでは以下のサンプルコードのように、if文をネストさせることが可能です。

//サンプルプログラム

# coding: Shift-JIS

# forループで0から15までの整数値を表示する
for i in range(16):
  # 3の倍数もしくは5の倍数であるか調べる
  if i % 3 == 0 or i % 5 == 0:
    # 3の倍数であれば「foo」と表示する
    if i % 3 == 0:
      print("foo", end="")
    # 5の倍数であれば「bar」と表示する
    if i % 5 == 0:
      print("bar", end="")
  # いずれにも該当しない場合は数値を表示する
  else:
    print(i, end="")
  # 改行を挟む
  print();

//実行結果

上記のサンプルプログラムは、0から15までの数値のうち、3の倍数は「foo」・5の倍数は「bar」・15の倍数は「foobar」・それ以外は数値を表示するというもの。このように、最初に大まかな条件を設定してから絞り込む場合、if文をネストさせると便利です。

ただし、あまり深い階層までif文をネストさせると、プログラムの可読性が低下してわかりにくくなります。そのため、基本的には前述した論理演算子を活用して、if文のネストが深くなりすぎないようにするのが理想です。

【応用】Pythonのif文で知っておくと便利なテクニック

【応用】Pythonのif文で知っておくと便利なテクニック

Pythonのif文を使うときは、以下3つの構文・テクニックを知っておくと、より便利に使いこなせます。

  • 三項演算子
  • break文
  • contiune文

三項演算子

「三項演算子」を使うと、if-else文をより簡潔に記載できます。三項演算子の構文は以下のとおりです。

真の場合の処理 if 条件式 else 偽の場合の処理

以下のサンプルコードは、入力した値が偶数か奇数かを判定するコードを、三項演算子を使ってより簡潔にしたものです。

//サンプルプログラム

# coding: Shift-JIS

# ユーザーに整数値の入力を求める
while True:
  str = input("整数値を入力してください:")
  # 整数値が入力されなかった場合は繰り返す
  if str.isdecimal():
    # 整数値が入力された場合はint型に変換する
    num = int(str)
    break

# 三項演算子で数値が偶数か奇数かを判別する
print(("偶数" if num % 2 == 0 else "奇数") + "が入力されました")

//実行結果

上記のサンプルプログラムのように、if-else文を使う場合と比べて、三項演算子はソースコードが簡潔になります。しかし、場面によってはかえって可読性が低下することがあるので、多用しすぎないように注意が必要です。

break文

繰り返し処理を行うfor文では、途中で終了しないといけない場合があります。そのときは以下のように、if文で条件を指定したうえで「break」を記載すると、以降すべての処理をスキップできます。

//サンプルプログラム

# coding: Shift-JIS

# 整数値をリストに格納する
nums = [1, 2, 3, 4, 5]

# for文でリストの全要素を表示する
for i in nums:
  # iの値が「3」になったらループを抜ける
  if i == 3:
    break

  # リストの要素を表示する
  print(i)

//実行結果

「i == 3」以降のすべてのループ処理が行われていませんが、これは「break」でループ処理そのものが終了することが理由です。

continue文

breakは以降のループ処理すべてを終了させますが、「continue」特定の値のときだけ処理をスキップできます。以下のサンプルコードのように、if文で条件を指定したうえで「continue」を記載しましょう。

//サンプルプログラム

# coding: Shift-JIS

# 整数値をリストに格納する
nums = [1, 2, 3, 4, 5]

# for文でリストの全要素を表示する
for i in nums:
  # iの値が「3」のときだけ処理をスキップする
  if i == 3:
    continue

  # リストの要素を表示する
  print(i)

//実行結果

breakのときとは異なり「4」以降の値が表示されていますが、これはcontinueが「i == 3」のときだけ処理だけをスキップしたことが理由です。

Pythonのif文を活用して柔軟なプログラムを書こう

Pythonのif文を活用して柔軟なプログラムを書こう

Pythonのif文は、プログラムの条件分岐を行うための機能で、臨機応変な処理を行うために必須です。比較演算子や論理演算子と組み合わせることで、あらゆるパターンの条件分岐が実現でき、さまざまな機能を実装できるようになります。今回解説した知識やテクニックをふまえて、Pythonのif文を活用してみてください。

コードカキタイがオススメする記事!

  1. 子供におすすめのプログラミングスクール10選!学習メリットや教室選びのコツも紹介

    2022.01.06

    子供におすすめのプログラミングスクール10選!学習メリットや教室選びのコツも紹介

    #プログラミングスクール

  2. 【完全版】大学生におすすめのプログラミングスクール13選!選ぶコツも詳しく解説

    2022.01.06

    【完全版】大学生におすすめのプログラミングスクール13選!選ぶコツも詳しく解説

    #プログラミングスクール

  3. 【未経験でも転職可】30代におすすめプログラミングスクール8選!

    2022.01.06

    【未経験でも転職可】30代におすすめプログラミングスクール8選!

    #プログラミングスクール

  4. 初心者必見!独学のJava学習方法とおすすめ本、アプリを詳しく解説

    2022.01.06

    初心者必見!独学のJava学習方法とおすすめ本、アプリを詳しく解説

    #JAVA

  5. 忙しい社会人におすすめプログラミングスクール15選!失敗しない選び方も詳しく解説

    2022.01.06

    忙しい社会人におすすめプログラミングスクール15選!失敗しない選び方も詳しく解説

    #プログラミングスクール

  1. 【無料あり】大阪のおすすめプログラミングスクール14選!スクール選びのコツも紹介

    2022.01.06

    【無料あり】大阪のおすすめプログラミングスクール14選!スクール選びのコツも紹介

    #プログラミングスクール

  2. 【目的別】東京のおすすめプログラミングスクール20選!スクール選びのコツも徹底解説

    2022.01.06

    【目的別】東京のおすすめプログラミングスクール20選!スクール選びのコツも徹底解説

    #プログラミングスクール

  3. 【無料あり】福岡のおすすめプログラミングスクール13選!選び方も詳しく解説

    2022.01.06

    【無料あり】福岡のおすすめプログラミングスクール13選!選び方も詳しく解説

    #プログラミングスクール

  4. 【徹底比較】名古屋のおすすめプログラミングスクール13選!選び方も詳しく解説

    2022.01.06

    【徹底比較】名古屋のおすすめプログラミングスクール13選!選び方も詳しく解説

    #プログラミングスクール

  5. 【徹底比較】おすすめのプログラミングスクール18選!失敗しない選び方も徹底解説

    2022.01.06

    【徹底比較】おすすめのプログラミングスクール18選!失敗しない選び方も徹底解説

    #プログラミングスクール