比較演算子:大小関係や等しいかを判定する#

はじめに#

前回の記事では、真偽値(Boolean型)の基本について学びました。今回は、真偽値を生成するために重要な「比較演算子」について詳しく見ていきましょう。

比較演算子とは、2つの値を比較して、その結果を真偽値(TrueまたはFalse)として返す演算子です。数値の大小を比較したり、値が等しいかどうかを判断したりする際に使います。

基本的な比較演算子#

Pythonには、以下の6種類の基本的な比較演算子があります。

演算子意味
==等しいa == b
!=等しくないa != b
<より小さいa < b
>より大きいa > b
<=以下(より小さいか等しい)a <= b
>=以上(より大きいか等しい)a >= b

以下の例で、これらの比較演算子を試してみましょう。

>
# 比較演算子の基本
a = 5
b = 10

# 等しいか
print(f"{a} == {b}: {a == b}")
# 等しくないか
print(f"{a} != {b}: {a != b}")
# より小さいか
print(f"{a} < {b}: {a < b}")
# より大きいか
print(f"{a} > {b}: {a > b}")
# 以下か
print(f"{a} <= {b}: {a <= b}")
# 以上か
print(f"{a} >= {b}: {a >= b}")

実行結果:

5 == 10: False
5 != 10: True
5 < 10: True
5 > 10: False
5 <= 10: True
5 >= 10: False

等値演算子と代入演算子の違い#

Pythonでは、等しいかを比較する==(等値演算子)と、変数に値を代入する=(代入演算子)は異なります。この違いを理解することは非常に重要です。

  • =(代入演算子):変数に値を代入する
  • ==(等値演算子):2つの値が等しいかを判断し、真偽値を返す

初心者がよく間違えるのが、条件式で=を使ってしまうことです。条件式については後の回で詳しく説明します。

>
# 代入演算子と等値演算子の違い
x = 10  # 代入演算子:xに10を代入
print(f"xの値: {x}")

# 等値の確認
y = 10
is_equal = x == y  # 等値演算子:xとyが等しいかを確認
print(f"xとyは等しい?: {is_equal}")

実行結果:

xの値: 10
xとyは等しい?: True

数値の比較#

数値同士の比較は直感的に理解しやすいでしょう。整数と浮動小数点数が混在する場合も問題なく比較できます。

>
# 数値の比較
a = 5
b = 5.0
c = 10
d = -3

print(f"{a} == {b}: {a == b}")  # 整数と浮動小数点数の比較
print(f"{a} < {c}: {a < c}")
print(f"{d} < {a}: {d < a}")
print(f"{a} <= {a}: {a <= a}")  # 同じ値の比較
print(f"{c} >= {a}: {c >= a}")

# 複数の演算子を使う場合(カッコで囲むと読みやすい)
result = (a < c) and (d < a)
print(f"(a < c) かつ (d < a): {result}")

実行結果:

5 == 5.0: True
5 < 10: True
-3 < 5: True
5 <= 5: True
10 >= 5: True
(a < c) かつ (d < a): True

文字列の比較#

文字列の比較も可能ですが、どのように比較されるのかをしっかり理解する必要があります。文字列の場合は、辞書順(アルファベット順)で比較されます。

>
# 文字列の比較
s1 = "apple"
s2 = "banana"
s3 = "Apple"
s4 = "apple"

print(f"{s1} == {s4}: {s1 == s4}")  # 同じ文字列
print(f"{s1} == {s3}: {s1 == s3}")  # 大文字と小文字は区別される
print(f"{s1} < {s2}: {s1 < s2}")   # アルファベット順で比較
print(f"{s1} < {s3}: {s1 < s3}")   # 大文字と小文字の比較

実行結果:

apple == apple: True
apple == Apple: False
apple < banana: True
apple < Apple: False

文字列の比較で注目すべき点がいくつかあります。

  1. 大文字と小文字は区別されます(appleAppleは異なる)。
  2. 小文字は文字コード表(「Unicodeコードポイント」という文字の順序)にもとづいて大文字より後に登場するため、appleAppleより「大きい」とみなされます。
  3. 同じ文字で始まる文字列の場合、2番目、3番目...と順に比較されます。

日本語なども同様に文字コード表に従って結果が決まります。

>
# 日本語の文字列比較
j1 = "あいう"
j2 = "かきく"

print(f"{j1} < {j2}: {j1 < j2}")  # 「あ」と「か」の比較

実行結果:

あいう < かきく: True

異なる型の値の比較#

Pythonでは、異なる型の値も比較することができますが、想定外の結果になることがあるので注意が必要です。

>
# 異なる型の値の比較
print(f"5 == '5': {5 == '5'}")  # 整数と文字列
print(f"5 == 5.0: {5 == 5.0}")  # 整数と浮動小数点数
print(f"True == 1: {True == 1}")  # 真偽値と整数
print(f"False == 0: {False == 0}")  # 真偽値と整数
print(f"'' == 0: {'' == 0}")  # 空文字列と整数

実行結果:

5 == '5': False
5 == 5.0: True
True == 1: True
False == 0: True
'' == 0: False

異なる型の値を比較する場合の挙動について、以下の点に注意しましょう。

  1. 整数と浮動小数点数は、値が同じならTrueになります。
  2. Trueは数値の1と等価、Falseは数値の0と等価です。
  3. 整数と文字列など、全く異なる型同士は、たとえ見た目が同じ値でもFalseになります。

複数の比較を連結する#

Pythonでは、数学の記法のように複数の比較を連結することができます。

>
# 複数の比較を連結する
x = 10
result = 0 < x < 20  # xは0より大きく20より小さいか
print(f"0 < {x} < 20: {result}")

# 複数の条件を連結
y = 15
result = 0 < x < y < 20  # 0 < x < y < 20 か
print(f"0 < {x} < {y} < 20: {result}")

実行結果:

0 < 10 < 20: True
0 < 10 < 15 < 20: True

この書き方は、複数の条件をチェックする際に簡潔でわかりやすいコードになります。特に範囲チェックによく使われます。

まとめ#

この記事では、Pythonの比較演算子について詳しく学びました。

  • 基本的な比較演算子(==, !=, <, >, <=, >=)の使い方
  • 代入演算子(=)と等値演算子(==)の違い
  • 数値同士の比較、文字列同士の比較、異なる型の値の比較
  • 複数の比較を連結する方法

比較演算子は条件分岐や繰り返し処理で頻繁に使用されます。また、次回学ぶ論理演算子(and, or, not)と組み合わせることで、より複雑な条件を表現することができます。

日常的なプログラミングにおいて、比較演算子は非常に重要な役割を果たします。さまざまな比較演算子を使いこなして、正確な条件判断ができるようになりましょう。