比較演算子:大小関係や等しいかを判定する#
はじめに#
前回の記事では、真偽値(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
文字列の比較で注目すべき点がいくつかあります。
- 大文字と小文字は区別されます(
apple
とApple
は異なる)。 - 小文字は文字コード表(「Unicodeコードポイント」という文字の順序)にもとづいて大文字より後に登場するため、
apple
はApple
より「大きい」とみなされます。 - 同じ文字で始まる文字列の場合、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
異なる型の値を比較する場合の挙動について、以下の点に注意しましょう。
- 整数と浮動小数点数は、値が同じなら
True
になります。 True
は数値の1
と等価、False
は数値の0
と等価です。- 整数と文字列など、全く異なる型同士は、たとえ見た目が同じ値でも
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
)と組み合わせることで、より複雑な条件を表現することができます。
日常的なプログラミングにおいて、比較演算子は非常に重要な役割を果たします。さまざまな比較演算子を使いこなして、正確な条件判断ができるようになりましょう。