スキルアップ

Python入門:条件分岐(if文)についての基礎

はじめに

プログラムをつくるにおいて、

「ある条件を満たしたときに◯◯する」
「満たさなければ△△する」

といった処理の分岐が欠かせません

Pythonではそれを最も簡単に書けるのが if 文です。

if 文の扱い方の基礎を固めれば、
実務・副業案件でも使える条件ロジックが書けるようになります

今回は、条件分岐の基本や気を付けるべき点を、
私が学んだ内容とともに以下のポイントを
わかりやすくまとめていきます。

  • ifの基本構文
  • 比較演算子の選び方による条件の違い
  • インデントのずれがエラーを起こす落としやすさ
  • in 演算子や複数条件
    andor・短絡評価)の扱い
  • Python特有の偽(0・空文字・Noneなど)判定
    の細かなルール

この記事はこんな人におすすめ!

  • Pythonの基本を学びたい方
  • プログラミング未経験の方
  • 比較・論理演算子の使い方で迷いやすい方
  • inNone 判定の最適な書き方
    を押さえておきたい方
  • Pythonの真偽判定ルールを理解したい方


第1章:if文の基本構文とインデントのルール

if文の基本構文

Pythonの基本的な条件分岐は以下のように記述します。

if 条件式:
    処理A
elif 他の条件式:
    処理B
else:
    処理C

ポイント:

  • 条件式 は真(True)/偽(False)を返す式
  • 最初の if 条件が True なら処理Aを実行し、
    それ以外なら続く elifelse
    順番に判断されます
  • elseはどの条件にも当てはまらない場合に、
    到達する
  • 各キーワード(if,elif,else)の後には
    コロン : が必要になる
  • 各条件ごとの処理は
    インデントされたブロックに記述する

インデント(字下げ)の重要性

Pythonでは、C#やJavaのように
ブロック定義に波括弧 {} を使いません。

Pythonでのブロック定義は、
インデント(字下げ)でコードブロックを定義します。

また、ブロック内のすべての行が
同じインデント幅で揃っていないと、
Pythonは文法的にエラーとみなします

たとえば、以下のような場合はエラーとなります。
IndentationErrorTabError が発生
(インデントにスペースやTabが混在している場合も同様)

if x > 0:
    print("positive")
  print("done")  # インデント幅の不一致:エラーになる

ポイント:

  • 改行後の最初の文字位置が揃っていないだけでも
    エラーになる
  • 見た目が揃っていても、実際に使われている
    空白の数が違うとエラーになる

インデントルール:

  • 同じブロック内はすべて揃えて字下げ
  • インデント幅は慣例で「スペース4つ」
    を使うのが一般的(PEP8スタイル推奨)
  • Tab と Space は混ぜずに統一
    (例:スペース4つで統一)
  • ブロックが終われば、インデントを戻す
    (0スペースに戻す)

第2章:比較演算子・in演算子

比較演算子の基本

Pythonでは、値同士を比較して真偽の結果を得るために
比較演算子を使います。

主要なものは次の通りです。

演算子内容
==等しい
!=等しくない
<より小さい
>より大きい
<=以下
>=以上

比較例:

a = 5
b = 10

print(a == b)  # False
print(a != b)  # True
print(a < b)   # True
print(a >= 5)  # True

比較演算子を用いた式はTrueまたはFalseを返します。

そのため、if分の条件式として利用することが可能です。


in演算子

文字列やリスト、タプルなど反復可能なオブジェクトに対して、
特定の要素が含まれているかどうか
を調べるには in 演算子を使います。

用途としては、

  • 文字列内の部分一致
  • リスト内の要素チェック

などが利用場面としては多いのかなといった印象です。

文字列内の部分一致:

text = "Python programming"
if "Python" in text:
    print("Pythonが含まれています!")

リスト内の要素チェック:

fruits = ["apple", "banana", "cherry"]
if "banana" in fruits:
    print("banana がリストにあります")

逆に含まれない場合は not in を使います。

fruits = ["apple", "banana", "cherry"]
if "peach" not in fruits:
    print("peach はリストにありません")

比較演算子の組み合わせ

Pythonでは<,>,<=,>=
直感的に組み合わせることが可能です。
それにより、より厳密な条件分岐が可能です。

age = int(input("年齢を入力してください: "))
if 18 <= age <= 65:  #18歳以上、65歳以下が条件
    print("成年かつ定年前の年齢です")

注意点としては、不等号の向きが異なる場合です。

# 一見正しそうでも意味不明な条件になる
if 35 >= age <= 24:
    print("条件を満たす")  # これは成立しません

この式は、「35 >= age」かつ「age <= 24」
という評価になります。

論理的には「age が 35以下 かつ 24以下」であり、
ageが24以下でなければ成立しないという、
直感と異なる結果になります。

そのため、不等号の向きが違う場合は、
後述する論理演算子を使って明示的に書く必要があります。

# ✅ 明示的に書いたほうが安全
if 35 <= age  or 24 >= age:
    print("35歳以上または24歳以下です")

このようにすれば、
より明確かつバグを防ぐ安全なコードになります。


比較演算子の落とし穴

  • 数値と文字列の混合比較
if "10" == 10:  # Falseになります。型も比較対象

第3章:論理演算子(and / or / not)と短絡評価

論理演算子とは

複数の条件を組み合わせて判断するのに
利用する演算子を論理演算子といいます。

Pythonでは以下が論理演算子です。

  • and
    両方の条件が True のときだけ全体が True
  • or
    どちらか一方が True なら全体が True
  • not
    条件を 反転させる
    (True → False、False → True)
a = 5
if a > 0 and a < 10: #aが0より大きく、10より小さい
    print("0 < a < 10")

if a == 0 or a == 10: #aが0又は10
    print("a is 0 or 10")

if not a == 20: #aが20以外
    print("a is not 20")

短絡評価(ショートサーキット)

Pythonの論理演算子のうち、
andor短絡評価を行います。

短絡評価とは、結果が確定したタイミングで評価を決定し、
それ以降の評価をスキップする仕組みです。

不要な処理を回避できるので、
効率的かつ安全に条件チェックができます。

  • and
    左が False
    → 右は評価せずに False 固定
  • or
    左が True
    → 右は評価せずに True 固定
def true_func():
    print("True is called")
    return True

def false_func():
    print("False is called")
    return False

print(false_func() and true_func())
# 出力:False is called
#    False
# true_func() は呼ばれない

print(true_func() or false_func())
# 出力:True is called#    True# false_func() は呼ばれない


注意点・落とし穴

  • andor は、
    常に True/False を返すわけでなく、
    最後に評価された値(オブジェクト)を返す
a = 0 and "hello" # 変数aの値は、 0 
b = "" or "default" # 変数bの値は、 "default"

これは、bool(true,false)以外にも
真偽値のルールがあるためです。

  • 数値において、0を偽、それ以外を真として扱う
  • 文字列において、ブランク(空白)を偽、
    それ以外を真として扱う

第4章:ネストされたifとPython独特の真偽判定

ネスト (入れ子) 構造

if文を入れ子にすることで、
より細かい条件分岐が可能になります。

これをif文のネストと呼びます。

age = int(input("年齢を入力してください:"))
if age >= 18:
    print("おとな料金です")
    status = input("会員ですか? (yes/no): ")
    if status == "yes": #if文内でさらに条件分岐(ネスト)
        print("会員割引が適用されます")
    else:
        print("通常料金です")
else:
    print("こども料金です")

上記のコードは、

  • 最初に大項目(年齢)で分けたあと、
  • 会員かどうかで内部でさらに分岐しています

ネストが深くなると可読性が落ちるため、
途中で関数化するなど整理が重要です。

関数化についてはまた別の記事でまとめます。


真偽判定の基本ルール

論理演算子の落とし穴で少し触れましたが、
Pythonでは、以下の値がFalseとみなされます

  • 数値: 0, 0.0
  • 空のシーケンス: "", [], ()
  • 空のコンテナ: {}, set()
  • None

これら以外の値はTrueと評価されます。


Noneの判定方法

Pythonでは、None
唯一無二の「値がないこと」を表す特別なオブジェクト
です。

そのため、None の判定には、他の比較演算子と異なり
isキーワードを用いて判定するのが
ベストプラクティスとなります。

result = None
if result is None:
    print("値が未設定です")
if result == None: # 判定は可能
    print("比較しているけれど、== は避けたい")

ポイント:

  • is None
    オブジェクトの同一性を比較、
    推奨される書き方
  • == None
    ==の挙動がカスタムされているクラスでは
    予期せぬ挙動を取る可能性がある

第5章:まとめ & 次回予告

今回は、Pythonの条件分岐に関する基礎をまとめていきました。

if 文を中心に、
比較演算子・論理演算子・in 演算子・is None
を使った判定、
そして False とみなされる値
(0、空文字、None など)の特徴、
Pythonならではの条件制御の書き方を段階的にまとめました。

条件分岐はプログラミングで処理を作っていくうえで、
欠かせない考え方です。
使いこなせるようになると、
より大規模なプログラムを組めるようになっていきます。

また、if文ではネストを深くしすぎず、
コードの読みやすさを意識することも、
実務・副業で活躍するうえで重要です。

次回は、条件分岐と並ぶ
プログラミングのもう一つの柱となる処理構造、
繰り返し処理(ループ)について学習していく予定です。

繰り返し処理は、プログラミング未経験のうちは
イメージがつかみにくい印象がありますが、

  • for 文と while 文の基本構文と違い
  • range() を使った反復処理
  • break / continue の使い方
  • ネストされるループなどの応用
  • 実務に役立つループパターンの紹介

など、つまずきやすいポイントも含めて
しっかり整理していきます。

繰り返し処理を習得すれば、
データの一覧処理や自動化にも強くなり、
Pythonの実力が一段とレベルアップします。

これからIT未経験で副業を考えているなら、必須の内容です。

▶次回の記事はこちら:
[現在準備中です!少々お待ちください!]

-スキルアップ