メインコンテンツへスキップ
Lesson2 / 5

比較演算子 - 値を比べる

目次

このレッスンで学ぶこと

  • 比較演算子とは何か
  • 6つの比較演算子の使い方
  • 比較演算子と条件分岐の組み合わせ
  • 文字列やリストの比較

比較演算子とは

比較演算子は、2つの値を比べて、その結果を真(True)または偽(False)で返す記号です。

Pythonの比較演算子一覧

演算子名前意味結果
==等しい左右が等しい5 == 5True
!=等しくない左右が異なる5 != 3True
>より大きい左が右より大きい5 > 3True
<より小さい左が右より小さい5 < 3False
>=以上左が右以上5 >= 5True
<=以下左が右以下5 <= 3False

比較演算子の特徴

  • 比較結果は必ずTrueFalse(ブール型)
  • 数値、文字列、リストなど様々な型で使える
  • 条件分岐(if文)で頻繁に使う
  • 複数の比較を組み合わせられる

簡単な例

Python
# 基本的な比較
print(10 == 10)  # True(等しい)
print(10 != 5)   # True(異なる)
print(10 > 5)    # True(大きい)
print(10 < 5)    # False(小さくない)

なぜ比較演算子が必要なのか?

プログラムでは、「条件を満たしているか」を判断する場面が多くあります。

Python
age = 18

# 18歳以上かチェック
if age >= 18:
    print("成人です")
else:
    print("未成年です")

比較演算子を使うことで、値の大小や一致を判定し、プログラムの動作を変えられます。

💡 豆知識: 比較演算子は「関係演算子」とも呼ばれます。2つの値の関係(大きい、小さい、等しい)を調べるため、この名前が付いています。


基本的な比較演算子

等しい(==)

機能: 左右の値が等しいかを判定します。

Python
# 数値の比較
print(5 == 5)    # True
print(5 == 3)    # False

# 変数の比較
age = 20
print(age == 20)  # True
print(age == 18)  # False

# 文字列の比較
name = "太郎"
print(name == "太郎")  # True
print(name == "花子")  # False

注意: 等号は2つ(==)です。代入の=と混同しないように。

用途: 値の一致確認、条件分岐


等しくない(!=)

機能: 左右の値が等しくないかを判定します。

Python
# 基本的な使い方
print(5 != 3)    # True(異なる)
print(5 != 5)    # False(同じ)

# パスワードチェック
password = "abc123"
print(password != "")  # True(空でない)

# 状態チェック
status = "error"
if status != "success":
    print("エラーが発生しました")

用途: 不一致の確認、エラーチェック


より大きい(>)

機能: 左の値が右の値より大きいかを判定します。

Python
# 数値の比較
print(10 > 5)   # True
print(5 > 10)   # False
print(5 > 5)    # False(等しい場合はFalse)

# 年齢制限
age = 25
if age > 18:
    print("成人向けコンテンツを表示")

# 点数判定
score = 85
if score > 80:
    print("優秀です")

用途: 大小比較、閾値判定


より小さい(<)

機能: 左の値が右の値より小さいかを判定します。

Python
# 基本的な使い方
print(5 < 10)   # True
print(10 < 5)   # False
print(5 < 5)    # False

# 在庫チェック
stock = 3
if stock < 5:
    print("在庫が少なくなっています")

# 温度チェック
temperature = 10
if temperature < 15:
    print("寒いです")

用途: 下限チェック、警告判定


以上(>=)

機能: 左の値が右の値以上(等しいまたは大きい)かを判定します。

Python
# 基本的な使い方
print(10 >= 5)   # True
print(5 >= 10)   # False
print(5 >= 5)    # True(等しい場合もTrue)

# 合格判定
score = 60
if score >= 60:
    print("合格")
else:
    print("不合格")

# 年齢確認
age = 18
if age >= 18:
    print("成人です")

用途: 最低基準の確認、資格判定


以下(<=)

機能: 左の値が右の値以下(等しいまたは小さい)かを判定します。

Python
# 基本的な使い方
print(5 <= 10)   # True
print(10 <= 5)   # False
print(5 <= 5)    # True

# 制限チェック
file_size = 5  # MB
if file_size <= 10:
    print("アップロード可能です")

# 割引判定
age = 12
if age <= 12:
    print("子供料金が適用されます")

用途: 上限チェック、範囲判定


範囲の判定

チェーン比較

機能: 複数の比較を連結して範囲を判定します。

Python
# 範囲チェック(18歳以上65歳未満)
age = 30
if 18 <= age < 65:
    print("労働年齢です")

# 通常の書き方と比較
if age >= 18 and age < 65:
    print("労働年齢です")  # 同じ意味

# 点数の範囲
score = 75
if 70 <= score <= 79:
    print("B評価")

# 温度の範囲
temp = 25
if 20 <= temp <= 28:
    print("快適な温度です")

書き方: 下限 <= 値 < 上限

用途: 範囲判定、グレード分け


文字列の比較

文字列の等価比較

Python
# 大文字小文字を区別
print("Hello" == "hello")  # False

# 完全一致
print("Python" == "Python")  # True

# 空文字列チェック
text = ""
if text == "":
    print("空です")

# 入力チェック
user_input = "yes"
if user_input == "yes":
    print("処理を続行します")

文字列の辞書順比較

Python
# アルファベット順
print("apple" < "banana")  # True
print("zebra" > "apple")   # True

# 日本語の比較(Unicodeコード順)
print("あ" < "い")  # True
print("山田" < "田中")  # False

注意: 文字列の<>は辞書順(Unicode順)で比較されます。


リストの比較

Python
# リストの等価比較
list1 = [1, 2, 3]
list2 = [1, 2, 3]
list3 = [3, 2, 1]

print(list1 == list2)  # True(内容が同じ)
print(list1 == list3)  # False(順序が違う)

# 要素ごとの辞書順比較
print([1, 2, 3] < [1, 2, 4])  # True
print([1, 2, 3] < [1, 3, 0])  # True

具体例

例1: 成績評価システム

Python
score = 85

if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"
elif score >= 60:
    grade = "D"
else:
    grade = "F"

print(f"点数: {score}, 評価: {grade}")

例2: 料金計算(年齢別)

Python
age = 15

if age < 6:
    price = 0  # 未就学児無料
elif age < 12:
    price = 500  # 小学生
elif age < 18:
    price = 800  # 中高生
elif age < 65:
    price = 1200  # 大人
else:
    price = 600  # 高齢者割引

print(f"{age}歳: {price}円")

例3: BMI判定

Python
weight = 65
height = 1.7
bmi = weight / height ** 2

print(f"BMI: {bmi:.1f}")

if bmi < 18.5:
    print("低体重")
elif bmi < 25:
    print("普通体重")
elif bmi < 30:
    print("肥満(1度)")
else:
    print("肥満(2度以上)")

例4: パスワード強度チェック

Python
password = "MyPass123"

# 長さチェック
if len(password) >= 8:
    print("長さ: OK")
else:
    print("長さ: 8文字以上にしてください")

# 強度判定
if len(password) >= 12:
    strength = "強"
elif len(password) >= 8:
    strength = "中"
else:
    strength = "弱"

print(f"パスワード強度: {strength}")

例5: 営業時間チェック

Python
hour = 14  # 14時

# 営業時間: 9時〜18時
if 9 <= hour < 18:
    print("営業中")
else:
    print("営業時間外")

# 詳細判定
if hour < 9:
    print("開店前")
elif hour < 18:
    print("営業中")
else:
    print("閉店")

例6: 商品の在庫警告

Python
stock = 5
min_stock = 10
max_stock = 100

if stock <= 0:
    print("在庫切れ")
elif stock < min_stock:
    print("在庫が少なくなっています")
elif stock > max_stock:
    print("過剰在庫です")
else:
    print("在庫は適正です")

よくある間違い

間違い1: =と==の混同

Python
x = 5

# 間違い: = は代入
if x = 5:  # SyntaxError
    print("5です")

# 正しい: == は比較
if x == 5:
    print("5です")

間違い2: 範囲判定の書き方

Python
age = 25

# 間違い: このように書けない
if 18 < age > 65:  # 意図と異なる結果
    print("範囲外")

# 正しい: andを使う
if age > 18 and age < 65:
    print("範囲内")

# またはチェーン比較
if 18 < age < 65:
    print("範囲内")

間違い3: 浮動小数点の比較

Python
# 問題: 小数の誤差
result = 0.1 + 0.2
print(result == 0.3)  # False(誤差がある)

# 対策: 許容範囲で比較
tolerance = 0.0001
if abs(result - 0.3) < tolerance:
    print("ほぼ等しい")

間違い4: 文字列と数値の比較

Python
# エラー: 型が違う
age = 20
if age == "20":  # False(intとstrは別)
    print("20歳")

# 正しい: 型を揃える
if age == int("20"):
    print("20歳")

# または
if str(age) == "20":
    print("20歳")

間違い5: 複数の値との比較

Python
x = 5

# 間違い: このように書けない
if x == 3 or 5 or 7:  # 常にTrue(5はTruethy)
    print("3, 5, 7のいずれか")

# 正しい
if x == 3 or x == 5 or x == 7:
    print("3, 5, 7のいずれか")

# またはinを使う
if x in [3, 5, 7]:
    print("3, 5, 7のいずれか")

練習問題

問題1(基礎)⭐☆☆

変数temperatureに気温が入っています。25度以上なら「暑い」、25度未満なら「涼しい」と表示してください。

💡 ヒント

>= または < を使います。

✅ 解答例
Python
temperature = 28

if temperature >= 25:
    print("暑い")
else:
    print("涼しい")

実行結果:

暑い

解説: >= は「以上」を意味し、等しい場合も含みます。


問題2(基礎)⭐☆☆

2つの数値を比較して、大きい方を表示してください。

💡 ヒント

> で大小を比較します。

✅ 解答例
Python
a = 10
b = 15

if a > b:
    print(f"大きい方: {a}")
else:
    print(f"大きい方: {b}")

実行結果:

大きい方: 15

解説: a > b が真ならa、偽ならbが大きい方です。


問題3(応用)⭐⭐☆

点数が0〜100の範囲に入っているか確認し、範囲外なら「無効な点数」と表示してください。

💡 ヒント

チェーン比較 0 <= score <= 100 を使います。

✅ 解答例
Python
score = 85

if 0 <= score <= 100:
    print(f"点数: {score}点")
else:
    print("無効な点数")

# 範囲外の例
score2 = 150
if 0 <= score2 <= 100:
    print(f"点数: {score2}点")
else:
    print("無効な点数")

実行結果:

点数: 85点
無効な点数

解説: チェーン比較で範囲判定ができます。


まとめ

このレッスンでは、比較演算子を使った条件判定の基本を学びました。

  • 比較演算子は、式を True / False で評価するために使います。
  • === の役割の違いを理解し、代入と比較を正しく使い分けられます。
  • >, <, >=, <= を使って、大小比較や範囲判定ができます。
  • チェーン比較を使うことで、範囲チェックを簡潔に書けます。
  • 型や小数誤差の影響を意識して、意図した比較式を書くことが重要です。