Pythonのif文の使い方ガイド:条件分岐の基本と応用方法

プログラミング 公開日: 更新日:
ブックマーク
Pythonのif文の使い方ガイド:条件分岐の基本と応用方法
Python学習初心者の方に向けて、Pythonでif文はどのように書くのかを中心に説明しています。まずプログラミング言語においてif文とは何かを解説した後に「if else文」「if elif else文」などの基本的なものから様々な応用例、三項演算子の解説などを行っています。

この記事では、Pythonを学習中でif文を理解しようとされている方に向けて、Pythonでのif文の書き方や、if文を書く際の注意点、応用、三項演算子を使って1行でif文を書く方法についてご紹介していきます。

if文とは?

if文は、プログラム内で条件分岐を行うために使用され、PythonだけではなくJava、PHP、Rubyなどほとんどのプログラミング言語で採用されている基本的なプログラミング構文です。
とても多くの言語で使われていますが、if文自体の処理や考え方などはほぼ同一なので、一度習得すればPython以外の言語を勉強することになっても応用が効きます。

Pythonのif文は、プログラムの中で条件分岐を行うための基本的かつ重要な構文で、習得は必須と言って良いでしょう。
if文を使うことで、特定の条件が満たされた場合にのみ特定の処理を実行することができます。
これは、プログラムの流れを制御し、様々な状況に応じて異なる動作をさせるために不可欠な機能です。

【予備知識】Pythonのif文でインデントする際の注意点

プログラミングでは、コードを読みやすくするためにスペースや空白を入れることがあります。これをインデントと呼びます。
Pythonのif文を正しく使うためには、インデント(字下げ)のルールをしっかりと理解しておくことが重要です。
間違ったインデントをするとエラーの原因となりますので、特に初心者の方は注意しましょう。
ここを理解されてから次のセクションへ進むことをお勧めします。

Pythonにおけるif文のインデントについて

Pythonでは、if文などのブロック構造を示すためにインデントが非常に重要です。
他のプログラミング言語と異なる点がいくつかありますので、注意が必要です。

インデントの役割

Pythonではインデントに大切な役割があります。それは、コードのグループ分けを示すことです。
プログラムには、条件によって実行されるコードの集まりがあります。Pythonではこのコードのまとまりを、インデントで表現するのです。
通常、Pythonのコードは1行に1つの命令しか書きません。でも、条件によってはいくつかの命令をグループとしてまとめる必要があります。そのとき、インデントを使ってそのグループ分けを示すのです。

正しいインデントの方法

Pythonでは、行の先頭にある空白(スペース)がインデントを示します。同じ数の空白でインデントされた行は、同じブロックの一部として扱われます。

例えば、以下のようなif文があります。

if 条件:
    実行するコード

この場合、条件が真の場合に実行されるコードは、if文の次の行にスペースを使ってインデントします。

タブ文字に注意

多くのテキストエディタでは、スペースとタブを使ってインデントを表現することができます。しかし、Pythonではタブ文字の使用は推奨されていません。タブ文字を使うと見た目にはインデントされているように見えますが、Pythonはこれを正しく認識せず、IndentationError: unexpected indentのようなエラーが発生することがあります。

そのため、Pythonのコードでは必ずスペースを使ってインデントを行いましょう。一般的には、1段のインデントに4つのスペースを使用します。

Pythonにおける基本的なif文の書き方

早速Pythonでif文を作っていきましょう。

if else文の書き方

if文の基本である「if else文」の書き方から説明していきます。

if 条件式:
    条件式Aが「真」である時に行う処理A
else:
    それ以外の時に行う処理B

if文は、ifの後に続く「条件式」が真である時に上図の「処理A」を実行し、条件式が真ではない時にelse以下の「処理B」を実行するというのが基本の形です。

では、簡単にif else文の例文を見ていきましょう。

x = 3
y = 4

if x + y == 7 :
  print('正解です。')
else :
  print('不正解です。')

# この場合は「正解です。」と出力される。

この場合、関数x = 3、y = 4なので、条件式x + yの答えは「7」です。つまり、条件式は「真」であるために、「正解です」と出力されるわけです。

例えばこの時、「if x + y == 9」となっていた場合、条件式は「偽」なので、「不正解です」と出力されます。

if elif else文の書き方

「if else文」が理解できたところで、次は複数の条件分岐を行う「if elif else文」について解説していきます。

if 条件式A :
    条件式Aが「真」である時に行う処理A
elif 条件式B :
    条件式Aが「偽」で、条件式Bが「真」である時に行う処理B
elif 条件式C :
    条件式Aも条件式Bも「偽」で、条件式Cが「真」である時に行う処理C
・・・
else
    上記の条件式がすべて「偽」である時に行う処理X

先ほどの「if else文」では、条件式に対する出力値は「処理A」か「処理B」の2通りしかありませんでした。
しかし、実際のプログラムでは複数の条件分岐を必要とすることが多くあります。

「if elif else文」は、複数の条件分岐を行いたい時に必要になる構文で、「処理C」「処理D」「処理E」と分岐した処理をいくつも構築することができます。

elifの後に条件式を続けることでいくつも条件を分岐させることが可能です。
最後のelseの後の「処理X」は、全ての条件式が「偽」である時に実行する処理になります。以下に、実際に使う際の例文を作成しました。

x = 3

if x == 3 :
    print('Xは3です。')
elif x > 0 :
    print('Xは正の数です。')
elif x <  0 :
    print('Xは負の数です。')
else :
    print('Xは0です。')

例えば、xの値が「正の数」「負の数」「0」「3」のどれか確かめたい時は、4つの条件分岐をしてif文を構成しなければなりません。

そのため、上記の文では、条件文を4つ設置することで、数が4つの条件の中のどれに当てはまるのか調べています。

Pythonのif文の利用例

Pythonのif文について、基本的な構文は理解できたでしょうか。
ここでは、if文を使った実用的なプログラム例をいくつか紹介します。
いずれも実際の開発でよく発生するケースです。
各サンプルはGoogle Colaboratoryで実行したり、Pythonファイルとして保存して実行することで動作を確認することができます。

数値の比較

ユーザーから入力された数値が10以上かどうかを判定するプログラムです。これは、数値の条件判定を行う基本的な例です。

# ユーザーから数値を入力してもらう
number = int(input("数値を入力してください: "))

# 入力された数値が10以上かどうかを判定
if number >= 10:
    print("入力された数値は10以上です。")
else:
    print("入力された数値は10未満です。")

偶数と奇数の判定

ユーザーから入力された数値が偶数か奇数かを判定するプログラムです。これは、数値の偶奇判定を行う実用的な例です。

# ユーザーから数値を入力してもらう
number = int(input("数値を入力してください: "))

# 偶数か奇数かを判定
if number % 2 == 0:
    print("入力された数値は偶数です。")
else:
    print("入力された数値は奇数です。")

年齢に基づくメッセージ

ユーザーから年齢を入力してもらい、年齢に基づいてメッセージを表示するプログラムです。年齢による条件分岐の例として使えます。

# ユーザーから年齢を入力してもらう
age = int(input("年齢を入力してください: "))

# 年齢に基づいてメッセージを表示
if age < 18:
    print("未成年です。")
else:
    print("成人です。")

複数条件の判定

ユーザーから2つの数値を入力してもらい、特定の条件に従ってメッセージを表示するプログラムです。複数の条件を組み合わせた例です。

# ユーザーから2つの数値を入力してもらう
num1 = int(input("1つ目の数値を入力してください: "))
num2 = int(input("2つ目の数値を入力してください: "))

# 条件に従ってメッセージを表示
if num1 >= 50 and num2 >= 50:
    print("両方とも50以上です。")
elif num1 >= 50 or num2 >= 50:
    print("一方が50以上です。")
else:
    print("両方とも50未満です。")

ネストされたif文の使用

ユーザーから成績を入力してもらい、成績に基づいてメッセージを表示するプログラムです。より複雑な条件分岐の例として、ネストされたif文を使用しています。

# ユーザーから成績を入力してもらう
score = float(input("成績を入力してください (0~100): "))

# 成績に基づいてメッセージを表示する
if score >= 90:
   print("素晴らしい!")
   if score >= 95:
       print("最高点に近い成績です。")
elif score >= 80:
   print("良い成績です。")
elif score >= 70:
   print("まずまずの成績です。")
   # 75点以上の場合は残りの課題をがんばるようメッセージを出す
   if score >= 75:
       print("残りの課題もがんばりましょう。")
else:
   print("もう少し頑張りましょう。")

Pythonのif文の応用

Pythonのif文は基本的な条件分岐だけでなく、複雑なロジックの構築や他のPythonの概念との組み合わせによって、より高度なプログラミングを実現します。
このセクションではif文を使った応用例として、複雑なロジックの作成方法やループ、関数との組み合わせ方を説明します。
これらの例もGoogle Colaboratoryで実行したり、Pythonファイルとして保存して実行してみてください。

複雑なロジックの作成

if文は、複数の条件を組み合わせることで複雑なロジックを作成することができます。以下に例を示します。

例: 商品の割引計算

ユーザーが購入した商品の合計金額に基づいて割引を適用するプログラムです。

# ユーザーから購入金額を入力してもらう
total_amount = float(input("購入金額を入力してください: "))

# 購入金額に応じた割引を計算
if total_amount >= 10000:
    discount = 0.20  # 20%の割引
elif total_amount >= 5000:
    discount = 0.10  # 10%の割引
elif total_amount >= 1000:
    discount = 0.05  # 5%の割引
else:
    discount = 0.0   # 割引なし

# 割引後の金額を計算して表示
final_amount = total_amount * (1 - discount)
print(f"割引後の金額は {final_amount:.2f} 円です。")

ループとの組み合わせ

if文をループと組み合わせることで、繰り返し処理の中で条件分岐を行うことができます。

例: リストの中の偶数をカウント

リスト内の数値を走査して、偶数の個数をカウントするプログラムです。

# 数値のリスト
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 偶数のカウントを初期化
even_count = 0

# リスト内の数値を走査
for number in numbers:
    if number % 2 == 0:
        even_count += 1

print(f"リスト内の偶数の数は {even_count} です。")

関数との組み合わせ

if文を関数内で使用することで、条件に基づいた柔軟な処理を関数としてまとめることができます。

例: ユーザーの年齢に基づくメッセージを表示する関数

ユーザーの年齢に基づいて適切なメッセージを表示する関数を作成します。

def age_message(age):
    if age < 13:
        return "あなたは子供です。"
    elif age < 20:
        return "あなたはティーンエイジャーです。"
    elif age < 65:
        return "あなたは大人です。"
    else:
        return "あなたはシニアです。"

# ユーザーから年齢を入力してもらう
user_age = int(input("年齢を入力してください: "))

# 関数を呼び出してメッセージを表示
print(age_message(user_age))

複数のif文とループを組み合わせた例

さらに複雑な例として、if文とループを組み合わせて、リスト内の数値を条件に基づいて異なるリストに分類するプログラムを見てみましょう。

例: 数値の分類

リスト内の数値を偶数と奇数に分類して別々のリストに格納します。

# 数値のリスト
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 偶数と奇数のリストを初期化
even_numbers = []
odd_numbers = []

# リスト内の数値を走査して分類
for number in numbers:
    if number % 2 == 0:
        even_numbers.append(number)
    else:
        odd_numbers.append(number)

print(f"偶数のリスト: {even_numbers}")
print(f"奇数のリスト: {odd_numbers}")

このように、if文は様々な場面で活用され、複雑なロジックを構築してより柔軟で強力なプログラムを作成することができます。
実際に手を動かしてこれらの例を試し、自分のプログラムに応用してみてください。

Pythonでif文を1行で書く方法

Pythonにはif文を1行で書く方法があります。これは三項演算子(conditional expression)というものを使った方法です。
三項演算子を使用すると、短くて読みやすいコードを書くことができます。
実際のプログラム内でもよく出てくる記述なので、概要は覚えておきましょう。

三項演算子の基本構文

三項演算子の基本構文は次の通りです:

value_if_true if condition else value_if_false

この構文では、conditionが真(True)であればvalue_if_trueが評価され、偽(False)であればvalue_if_falseが評価されます。

例: 数値の大小比較

以下の例では、abという2つの数値を比較し、どちらが大きいかを判定して、その結果を変数に格納します。

a = 10
b = 20

# 三項演算子を使った大小比較
max_value = a if a > b else b

print(max_value)  # 出力: 20

このコードでは、abのどちらが大きいかを判定しています。条件式 a > b が真の場合、max_valueには a が代入されます。条件式が偽の場合、max_valueには b が代入されます。

詳しい解説

順を追ってみていきましょう。

  1. 条件式の評価:
    • a > b という条件が評価されます。ここでは、ab よりも大きいかどうかをチェックしています。
  2. 条件が真の場合:
    • a > b が真(True)であれば、条件式の前にある a が選択されます。
    • つまり、amax_value に代入されます。
  3. 条件が偽の場合:
    • a > b が偽(False)であれば、else の後にある b が選択されます。
    • つまり、bmax_value に代入されます。

このように、三項演算子を使うことで、if文を1行で簡潔に書くことができます。
この方法は、特に簡単な条件分岐を行いたい場合に便利です。Pythonのコードをよりシンプルで読みやすくするために、ぜひ三項演算子を活用してみてください。

コードの可読性とベストプラクティス

最後にPythonのif文を使う際に知っておきたい、コードの可読性を高めるためのベストプラクティスです。
以下に、Pythonでif文を使用する際のベストプラクティスと、コードの可読性を高めるためのテクニックを紹介します。
これらを活用することで、他の人があなたのコードを読みやすくし、メンテナンスをしやすくすることができます。

1. 適切なインデントを使用する

Pythonでは、インデント(字下げ)がコードブロックを示すために必須です。通常、インデントにはスペース4つを使用することが推奨されています。
お使いのエディタでタブキーを押した時にスペースが4つ入るように設定しておくと便利です。

if condition:
    do_something()
else:
    do_something_else()

2. 一貫したスタイルを維持する

コードの可読性を保つために、一貫したスタイルを維持しましょう。例えば、条件式の前後にはスペースを入れるようにし、コード内でこれを維持します。

# 推奨される書き方
if a > b:
    print("a is greater than b")

# 推奨されない書き方
if(a>b):
    print("a is greater than b")

3. 明確な条件を使う

条件は可能な限り明確で簡潔に書きましょう。複雑な条件を使う場合は、変数に分けてわかりやすくすることも検討してください。

# 悪い例
if a > b and b < c and c == d:
    print("複雑な条件が成立")

# 良い例
is_a_greater_than_b = a > b
is_b_less_than_c = b < c
is_c_equal_to_d = c == d

if is_a_greater_than_b and is_b_less_than_c and is_c_equal_to_d:
    print("複雑な条件が成立")

4. 早期リターンを使う

関数内で複数の条件をチェックする場合、早期リターンを使うことでネスト(入れ子)の深さを減らし、コードをフラットに保つことができます。

def process_value(value):
    if value is None:
        return "No value provided"
    
    if value < 0:
        return "Negative value"

    return "Valid value"

5. 三項演算子の適切な使用

三項演算子はシンプルな条件分岐に便利ですが、条件が複雑な場合はif文を使用して可読性を保ちましょう。

# 三項演算子を使う
result = "Positive" if value > 0 else "Non-positive"

# 条件が複雑な場合はif文を使う
if value > 0:
    result = "Positive"
else:
    result = "Non-positive"

6. コメントを活用する

複雑な条件や意図を明確にするために、適切にコメントを追加しましょう。ただし、コメントが過剰になると逆効果なので注意が必要です。

if user.is_authenticated:
    # ユーザーが認証されている場合にのみアクセスを許可
    grant_access()
else:
    # 認証されていない場合はアクセスを拒否
    deny_access()

7. 関数やメソッドに分ける

条件分岐が複雑になる場合は、それを関数やメソッドに分けて処理することで、コードを整理しやすくします。

def is_valid_user(user):
    return user.is_authenticated and user.has_permission()

if is_valid_user(user):
    grant_access()
else:
    deny_access()

上記はあくまでも参考なので、開発チーム内での規約があればそれを優先的に利用してください。
コードの可読性が高いことは、多くの現場で重視されます。
適切なインデント、一貫したスタイル、明確な条件、早期リターン、適切なコメント、関数への分割などを心がけることで、他の人が理解しやすく、メンテナンスしやすいコードを書くことができます。

まとめ

この記事では、Pythonのif文の基本的な使い方から応用までを解説しました。
AIや機械学習の分野でも注目されているPythonですが、その初心者から上級者までPythonの条件分岐を理解し、効果的にコードに活用できることはとても重要なのです。
皆様が、この記事を通じてPythonのif文を理解し、自身のコードに活用できることを願っています。


TECH PLAYでは、エンジニアの方向けに勉強会・イベント情報を提供しています。
ご興味のある方はぜひご参加ください。

TECH PLAYでは、ITに関わる様々なイベント・勉強会・講演会・交流会・カンファレンス・セミナーなどの情報を集約し掲載しています。

テクノロジーと共に成長しよう、
活躍しよう。

TECH PLAYに登録すると、
スキルアップやキャリアアップのための
情報がもっと簡単に見つけられます。

面白そうなイベントを見つけたら
積極的に参加してみましょう。
ログインはこちら

タグからイベントをさがす