Pythonのifによる条件分岐と基本構文、応用例をわかりやすく解説

スポンサーリンク
スポンサーリンク
amazon
スマイルSALE
--:--:--
ad. 価格範囲を指定して商品を探せます

ifの概要

条件に応じた処理の切り替え Python予約語

if

概要 if(イフ)は、与えられた条件式が True(真)か False(偽)かを判定し、プログラムの進むルートを切り替える「条件分岐」を行うための最も基本的なキーワードです。

わかりやすく説明 if は、プログラムに「もし〜なら、この処理をやってね」という知性を与えるための仕組みです。たとえば、「スマートフォンのバッテリー残量が15%以下なら(条件)、画面にバッテリーセーバーの警告を出す(処理)」といった、現実世界のあらゆる「状況判断」をPythonコードの中に再現することができます。

  • 条件式を評価した結果が True であった場合にのみ、その直下にインデント(字下げ)して書かれたコードブロックを実行します。
  • elif(複数の追加条件)や else(どの条件にも合わなかった場合の最終処理)と組み合わせることで、複雑な多方向の分岐ルートを構築できます。
  • Pythonの if の後ろには、比較演算(>==)だけでなく、オブジェクトそのものを配置して「中身が空かどうか」を直感的にチェックする特性も備わっています。

ifの考え方をイメージで理解

ifの基本的な使い方

設定された条件式が正しい(True)と判断された場合にのみ、直下のメッセージを出力する最もシンプルな例です。

# if の基本
x = 10

if x > 5:
    # xは10なので「10 > 5」は成立(True)し、ブロック内が実行されます
    print("x は 5 より大きい")
  • if の末尾には必ずコロン(:)を記述し、実行したい処理の行はスペース4つ分のインデントを入れて記述するのがPythonの絶対のルールです。

if-elseで条件が成立しない場合の処理

条件が False になってしまった場合に、そのまま処理をスルーせず、「そうでなければこちらを行う」という別ルートを else で用意する例です。

# if-else の使用例
x = 3

if x > 5:
    print("x は 5 より大きい") # 条件不成立のため無視されます
else:
    # xが5以下(False)のケースはすべてここに流れ着きます
    print("x は 5 以下")

if-elif-elseで複数の条件を評価

上から順番に条件をテストしていき、最初に合致したブロックだけをピンポイントで実行する多重判定の例です。

# if-elif-else の例
score = 75

if score >= 90:
    print("優秀!") # 不合格(False)
elif score >= 70:
    print("合格")   # 合格(True)!ここで処理が実行され、以降の審査はすべてスキップされます
else:
    print("不合格")
  • elif は「else if」の略で、必要に応じて何個でも下に繋げることができます。ただし、上の方で一度でも条件が成立すると、それより下の elif は内容に関わらず一切評価されません。

ネストされたif文

if 文のブロックの中に、さらに if 文を入れ子(ネスト)にすることで、段階的な厳しい条件審査を実装できます。

# ネストされた if 文
age = 20
income = 3000000

if age >= 18:
    # 年齢制限をクリアしたデータだけが、この2次審査(インデント2階層目)に進めます
    if income > 2000000:
        print("ローン申請が可能です")
    else:
        print("収入が不足しています")
else:
    print("年齢要件を満たしていません")

1行で記述するif文(条件演算子 / 三項演算子)

「条件によって変数に代入する値を1行でサクッと切り替えたい」という場合に重宝する、Pythonのスマートな短縮表記です。

# 条件演算子(三項演算子)の例
x = 10
status = "正の数" if x > 0 else "負の数またはゼロ"

print(status) # 結果: 正の数
  • 【Trueのときの値】 if 【条件式】 else 【Falseのときの値】 という独特な順序で記述します。コードをすっきりと簡潔に保ちたいときに多用されます。

if文の注意点

  • インデントが1マスでもズレるとプログラムが壊れる(最重要):Pythonは他言語のように {}(波括弧)でブロックを囲まない代わりに、見た目の字下げ(インデント)で構造を判断します。同じブロック内の処理は必ずインデントの深さを寸分違わず揃える必要があります。ズレがあると IndentationError が発生します。
  • 「=」と「==」の書き間違えによる致命的な文法ミス:値を代入する x = 10 と、値を比較する if x == 10: は全くの別物です。if の中に誤って = を1つしか書かなかった場合、Pythonでは即座にエラーとして弾かれます。
  • 「Falsy(偽を意味する)なオブジェクト」の暗黙の判定に注意:Pythonの if は、論理式だけでなくオブジェクトそのものの生死を判定できます。数値の 0、空文字列 ""、空リスト []None は、if にかけるとすべて自動的に False 扱いになります。これを知らないと、「データが 0 という正常値なのに、データが存在しないと誤判定された」というバグを生み出す原因になります。
    # 【失敗を招きやすい例】
    registered_users = 0 # 登録者数が「ゼロ人」という正常な数値
    
    if not registered_users:
        # 0 は False と判定されるため、not によって True に反転し、ここを通過してしまいます
        print("警告:ユーザーデータが破損、または存在しません") # 誤警告バグ

if文のよくある質問

Q: 複雑な条件を1行の `if` に詰め込みたいとき、どう書けばいいですか?
A: 論理演算子である and(かつ)や or(または)を使って条件を結合します。 なお、条件の優先順位を明確にしたり、人間の目から見てパッと見の可読性を上げるために、それぞれの塊を ()(丸括弧)で明示的に括るのが実務上の美しい書き方です。

# and と or を使った複合条件
if (age >= 20 and income >= 3000000) or is_premium_staff:
    print("特別優待アクセスを許可します")
Q: `elif` を並べるのと、新しく `if` を何個も独立して書くのは何が違うのですか?
A: 「連動した1つのイベント」か、「それぞれ完全に独立した別個のチェック」かという違いがあります。 elif で繋げた場合、どれか1つでも条件が当たった時点で全体の処理が終了し、残りの条件は無視されます。しかし、if を縦に並べた場合は、すべての if が上から下まで毎回生真面目に審査されるため、複数の if ブロックが同時に実行されてしまう原因になります。

# 【失敗例:if を並べた場合】
num = 15
if num > 10:
    print("10より大きい") # 条件に合致するので実行
if num > 5:
    # 前のifとは無関係にここも審査され、合致するので実行されてしまう(二重出力バグ)
    print("5より大きい") 

まとめ

if は、プログラムにあらゆるシチュエーションに応じた柔軟な判断力と、実行ルートの切り替え能力を与える最重要キーワードです。

  • 条件式が True のときだけ、指定されたインデントブロックを確実に実行する。
  • elifelse と緊密に連動させることで、複数の選択肢からどれか1つだけを確実に選び取るロジックが作れる。
  • Python特有の「0や空オブジェクトは False とみなされる」性質(Falsy)を意識して、厳密な条件式を組み立てる。

実務のWebアプリケーション開発やデータ解析のスクリプトにおいて、適切な if による条件分岐の設計は、バグのない堅牢なシステムを構築するための土台となります。インデントの規則を体に染み込ませ、スマートな条件ロジックを書けるようになりましょう。