では 初心者向けにやさしく、例題を交えて詳しく説明します。実際のコード例と練習問題(解答付き)も付けます。読みながら手元で Python を動かして試してみてください。
比較演算子(復習) — 基本
比較演算子は「2つの値を比べる」ための記号で、結果は常に True(真)か False(偽)になります。主なもの:
<:左が右より小さい<=:左が右と等しいか小さい>:左が右より大きい>=:左が右と等しいか大きい==:左と右が等しい(比較)!=:左と右が等しくない
注意:代入 = と比較の == は別物。= は「代入(変数に値を入れる)」、== は「等しいかどうかを調べる」です。
ブール値(True/False)
比較の結果はブール値(bool型)です。例:
>>> 3 < 5
True
>>> 10 == 2 + 8
True
>>> 5 != 5
False
Pythonif 文で使う(分岐)
比較は if 文でよく使います。
x = 18
if x >= 18:
print("成人です")
else:
print("未成年です")
Python出力:成人です(x が 18 以上だから)
複数の条件は elif で繋げます:
score = 72
if score >= 90:
grade = "A"
elif score >= 75:
grade = "B"
elif score >= 60:
grade = "C"
else:
grade = "D"
print(grade) # C
Python比較の便利な使い方・注意点
1) 連鎖比較(Chained comparisons)
Python は a < b < c のように書けます(数学に近い)。
x = 5
print(0 < x < 10) # True(0 < 5 かつ 5 < 10)
Pythonこれは 0 < x and x < 10 と同じ意味です。
2) 論理演算子と組み合わせる(and / or / not)
age = 20
has_id = True
if age >= 18 and has_id:
print("入場OK")
Pythonand は両方が True のとき True、or はどちらか一方でも True、not は反転。
3) 文字列の比較
文字列は辞書順(アルファベットや文字コード順)で比較されます。
"a" < "b" # True
"apple" < "banana" # True
"Apple" < "apple" # True — 大文字と小文字は区別される
Python日本語の比較は文字コードの順序に依るので、期待と違う場合がある(注意)。
4) 型に注意する
異なる型を比較するとエラーになることがあります(Python 3では例えば 3 < "5" はエラー)。数と数、文字列と文字列、など同じタイプ同士で比較しましょう。
5) 浮動小数点の比較
浮動小数点(0.1 + 0.2 など)は表現誤差があるため、厳密な等号比較 (==) は避ける場合があります。代わりに差の絶対値で比較します:
a = 0.1 + 0.2
b = 0.3
abs(a - b) < 1e-9 # ほぼ等しいかを確認
Python6) is と == の違い(補足)
==:値が等しいかどうかを比較is:オブジェクトの同一性(同じオブジェクトか)を比較
普通は値の比較に==を使います。isはNoneチェックなどで使うことがあります:
x = None
if x is None:
print("x は None")
Python例題(実行例付き)
例題で流れをつかみましょう。
例1:数の比較
a = 12
b = 7
print(a > b) # True(12 は 7 より大きい)
print(a == b) # False
Python例2:if を使った偶数チェック
n = 8
if n % 2 == 0:
print("偶数です")
else:
print("奇数です")
Pythonn % 2 == 0 は「n を 2 で割った余りが 0 と等しいか」をチェックしています。
例3:範囲チェック(連鎖比較)
x = 15
if 10 <= x <= 20:
print("10〜20の範囲内です")
Python例4:文字列で条件分岐
answer = "yes"
if answer == "yes":
print("続けます")
elif answer == "no":
print("終了します")
else:
print("わかりません")
Python初心者向けのよくあるミスと対処
=と==を混同する
->if x = 5:は文法エラー。if x == 5:とする。- 型が違う値を比較してエラーになる
->3 < "5"はダメ。同じ型で比較する。 - 浮動小数点の直接比較で期待と違う結果
-> 誤差を考えて差を用いる。 - 文字列比較で大文字小文字に注意
-> 比較前に.lower()/.upper()を使うと便利:s.lower() == "yes"。
練習問題(初心者〜やや易しめ)
各問の下に解答と解説を載せます(先に自分で考えてから確認してください)。
問1
次の式の結果は?
3 < 5
Python解答:True。
問2
次の式の結果は?
10 <= 10
Python解答:True(等しいので <= は True)。
問3
以下のコードの出力は?
x = 4
if x > 5:
print("A")
else:
print("B")
Python解答:B(4 は 5 より大きくないので else)。
問4
次を実行したときの結果は?
"apple" < "banana"
Python解答:True(辞書順で “apple” が先に来る)。
問5
次のコードを完成させて、num が 0 より大きければ "positive"、0 と等しければ "zero"、0 未満なら "negative" を表示してください。
(解答は下)
num = -3
# ここに if 文を書いてください
Python解答例:
if num > 0:
print("positive")
elif num == 0:
print("zero")
else:
print("negative")
Python出力:negative
問6(やや考える)
次の式は何を判定しているか説明してください:
0 < x <= 100
Python解答:x が 0 より大きく、かつ 100 以下(1〜100 の範囲に入っているか)を判定している。
問7(浮動小数点)
次のコードは True を出力するか?
a = 0.1 + 0.2
print(a == 0.3)
Python解答:多くの場合 False(内部表現の誤差により 0.1+0.2 は厳密に 0.3 にならない)。代わりに abs(a - 0.3) < 1e-9 のように比較する。
問8(実用)
ユーザー入力 s を大文字小文字を無視して "yes" と比較するコードを書いてください。
解答例:
s = input("yes/no? ")
if s.lower() == "yes":
print("OK")
else:
print("Not OK")
Python追加の練習問題
5 != 5の結果は? →False"Z" > "a"は? →False(大文字 ‘Z’ のコードが小文字 ‘a’ より小さい)if not (x > 0):はx <= 0と同じ意味? → Yes(not (x > 0)はxが 0 以下の時 True)。
まとめ(初心者向けに覚えるべきポイント)
==(等しい)と=(代入)は違う。- 比較は
True/Falseを返し、分岐(if)でよく使う。 - 連鎖比較(
a < b < c)は便利。 - 型の違い・浮動小数点の誤差に注意。
- 文字列比較は辞書順・大文字小文字に注意(必要なら
.lower()を使う)。
