Python 入門

Python 比較演算子

比較演算子はプログラミングにおける基礎的なツールであり、異なる値を比較し、その結果に基づいて意思決定を行うことを可能にします。

本章では、Python で利用可能なさまざまな比較演算子を探索し、それらを条件分岐(条件文)に効果的に適用してプログラムの実行フローを制御する方法を学びます。

1. 比較演算子を理解する

比較演算子は、2つの値を比較するために使用されます。比較操作の結果は常にブール値(Boolean)になり、True(真) または False(偽) のいずれかです。これらの演算子は通常、条件分岐(ifelifelse など)の中で、どのコードブロックを実行すべきかを決定するために使用されます。

以下は、Python における比較演算子のクイック解析です。

  • 等価 (==): 2つの値が等しいかチェックします。
  • 不等価 (!=): 2つの値が等しくないかチェックします。
  • より大きい (>): 左側の値が右側の値より大きいかチェックします。
  • より小さい (<): 左側の値が右側の値より小さいかチェックします。
  • 以上 (>=): 左側の値が右側の値以上であるかチェックします。
  • 以下 (<=): 左側の値が右側の値以下であるかチェックします。

1.1 等価 (==)

== 演算子は、2つの値が等しいかどうかをチェックします。注意: これを代入演算子(=)と混同しないようにしてください。= は変数に値を代入するために使われます。

x = 5
y = 10
print(x == y)  # 出力: False
print(x == 5)  # 出力: True

name1 = "Alice"
name2 = "Bob"
print(name1 == name2)   # 出力: False
print(name1 == "Alice") # 出力: True

最初の例では、5は10と等しくないため、x == y の結果は False になります。2番目の例では、x の値が確かに5であるため、x == 5True です。同じロジックが文字列の比較にも適用されます。

1.2 不等価 (!=)

!= 演算子は、2つの値が等しくないかどうかをチェックします。

x = 5
y = 10
print(x != y)  # 出力: True
print(x != 5)  # 出力: False

fruit1 = "apple"
fruit2 = "banana"
print(fruit1 != fruit2)  # 出力: True
print(fruit1 != "apple") # 出力: False

ここでは、5は確かに10と等しくないため、x != yTrue です。逆に、x は5と等しいため、x != 5False となります。

1.3 より大きい (>)

> 演算子は、左側のオペランド(被演算子)が右側のオペランドより大きいかどうかをチェックします。

x = 15
y = 10
print(x > y)  # 出力: True
print(y > x)  # 出力: False

temperature1 = 25
temperature2 = 20
print(temperature1 > temperature2) # 出力: True
print(temperature2 > temperature1) # 出力: False

15は10より大きいため x > yTrue ですが、10は15より大きくないため y > xFalse となります。

1.4 より小さい (<)

< 演算子は、左側のオペランドが右側のオペランドより小さいかどうかをチェックします。

x = 5
y = 10
print(x < y)  # 出力: True
print(y < x)  # 出力: False

age1 = 18
age2 = 21
print(age1 < age2) # 出力: True
print(age2 < age1) # 出力: False

5は10より小さいため x < yTrue ですが、10は5より小さくないため y < xFalse です。

1.5 以上 (>=)

>= 演算子は、左側のオペランドが右側のオペランド以上(大きいか、または等しい)であるかどうかをチェックします。

x = 10
y = 10
z = 5
print(x >= y)  # 出力: True
print(x >= z)  # 出力: True
print(z >= x)  # 出力: False

score1 = 75
score2 = 75
score3 = 60
print(score1 >= score2) # 出力: True
print(score1 >= score3) # 出力: True
print(score3 >= score1) # 出力: False

10は10と等しいため x >= yTrue です。また、10は5より大きいため x >= zTrue です。一方、5は10より大きくも等しくもないため z >= xFalse となります。

1.6 以下 (<=)

<= 演算子は、左側のオペランドが右側のオペランド以下(小さいか、または等しい)であるかどうかをチェックします。

x = 5
y = 5
z = 10
print(x <= y)  # 出力: True
print(x <= z)  # 出力: True
print(z <= x)  # 出力: False

quantity1 = 3
quantity2 = 3
quantity3 = 5
print(quantity1 <= quantity2) # 出力: True
print(quantity1 <= quantity3) # 出力: True
print(quantity3 <= quantity1) # 出力: False

5は5と等しいため x <= yTrue です。また、5は10より小さいため x <= zTrue です。一方、10は5より小さくも等しくもないため z <= xFalse です。

2. 条件分岐における比較演算子の活用

比較演算子は、条件分岐(ifelifelse)の中で最も頻繁に使用され、条件が真か偽かに基づいてコードの実行フローを制御します。

2.1 if 文

if 文は、指定された条件が True の場合にのみ、その内部のコードブロックを実行します。

age = 20
if age >= 18:
    print("あなたには投票権があります。")

temperature = 30
if temperature > 25:
    print("今日はとても暑いです!")

最初の例では、条件 age >= 18 が真であるため、「あなたには投票権があります。」というメッセージが表示されます。2番目の例では、temperature > 25 が真であるため、「今日はとても暑いです!」と表示されます。

2.2 else 文

else 文は、代替のコードブロックを提供します。もし if の条件が False であれば、プログラムは else 内のコードを実行します。

age = 16
if age >= 18:
    print("あなたには投票権があります。")
else:
    print("あなたにはまだ投票権がありません。")

temperature = 20
if temperature > 25:
    print("今日はとても暑いです!")
else:
    print("今日はそれほど暑くありません。")

ここでは、age >= 18 が偽(16は18以上ではない)であるため、else ブロックが実行され、「あなたにはまだ投票権がありません。」と表示されます。同様に、temperature > 25 が偽であるため、else ブロックが実行されます。

2.3 elif 文

elif("else if" の略)文を使用すると、複数の条件を順番にチェックできます。より複雑な意思決定シナリオを処理するための方法を提供します。

score = 75
if score >= 90:
    print("優秀です!")
elif score >= 70:
    print("よくできました!")
elif score >= 50:
    print("合格です。")
else:
    print("不合格です。")

grade = 85
if grade >= 90:
    print("A")
elif grade >= 80:
    print("B")
elif grade >= 70:
    print("C")
else:
    print("D")

最初の例では、if の条件 score >= 90 が偽であるため、プログラムは最初の elif 条件 score >= 70 に移動します。この条件は真であるため、「よくできました!」と表示されます。残りの elifelse ブロックはスキップされます。

3. 実戦ケースとデモンストレーション

比較演算子と条件分岐が、実際の開発シーンでどのように運用されるかを見てみましょう。

3.1 ケース 1:ユーザー入力の検証

この例では、ユーザー入力が特定の基準を満たしているか検証する方法を示します。

username = input("ユーザー名を入力してください:")
if username == "":
    print("ユーザー名は空欄にできません。")
else:
    print("有効なユーザー名です。")

password = input("パスワードを入力してください:")
if len(password) < 8:
    print("パスワードは少なくとも8文字以上である必要があります。")
else:
    print("有効なパスワードです。")

このコードは、ユーザー名とパスワードの入力を促します。そして、比較演算子を使用して、ユーザー名が空でないか、パスワードが8文字以上であるか(len() 関数で長さを取得)をチェックします。

3.2 ケース 2:2つの数値の大小比較

この例では、比較演算子を使用して2つの数値のうち大きい方を見つける方法を示します。

num1 = 10
num2 = 20

if num1 > num2:
    print("num1 は num2 より大きいです")
elif num2 > num1:
    print("num2 は num1 より大きいです")
else:
    print("num1 と num2 は等しいです")

この場合、num2num1 より大きいため、出力結果は「num2 は num1 より大きいです」となります。

3.3 ケース 3:数値が指定範囲内にあるかチェック

この例では、比較演算子を使用して数値が特定の範囲内に収まっているかをチェックする方法を示します。

number = 45
if number >= 0 and number <= 100:
    print("この数値は 0 から 100 の範囲内です。")
else:
    print("この数値は 0 から 100 の範囲外です。")

ここでは、number が0以上、かつ100以下であるかをチェックしています。45はこの範囲内にあるため、「この数値は 0 から 100 の範囲内です。」と表示されます。(※ここでの and は論理演算子であり、2つの比較操作を組み合わせるために使用されています。)