比較演算子

生田 陸人
LuaGate エンジニア / 現役エンジニア
編集 LuaGate編集部

このレッスンで分かること

  • 比較演算子は 2 値の関係を True / Falsebool 値で返す道具です
  • 等しいの判定は ==、代入の = とは別物です
  • 最小例は 3 == 3True"3" == 3 は型が違うので False になります

比較演算子 とは

== と != で値を比較し、bool 値を返す関数を書きます。本レッスンでは、比較演算子 の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。

比較演算子で値の関係を判定する

比較演算子は、2 つの値が等しいか・大小はどうかを判定し、結果を True または False という bool 値で返す道具です。これは「もし入力が同じなら処理を切り替えたい」「ある数より大きいときだけ警告を出したい」といった日常的な分岐の土台になります。Python では比較演算子の戻り値がそのまま if 文の条件や while ループの継続判定として使えるため、最初に必ず押さえておきたい文法のひとつです。

比較演算子は数学の不等号にとてもよく似ていますが、Python ならではの細かいルールがあります。たとえば「等しい」を表す == は代入の = と別物ですし、!= は「ノットイコール」、>= は「以上」を表すといった具合です。記号を覚えるだけでなく、それぞれの演算が「左辺と右辺の値を比べて bool を返す」というシンプルな仕組みを理解しておくと、後で出てくる and or などの論理演算と組み合わせて使えるようになります。

「等しい」を表すのは == であり、代入演算子の = とは別物です。混同するとバグの温床になります。

Python の比較演算子一覧

基本となる比較演算子は次のとおりです。== は値が等しいか、!= は値が異なるか、< <= > >= は大小を判定します。さらに is is not という同一性をチェックする演算子もありますが、これは「同じオブジェクトか」を見るためのものなので、値の比較には == を使うのが原則です。

演算子意味結果
==等しい3 == 3True
!=等しくない3 != 4True
<より小さい2 < 5True
<=以下5 <= 5True
>より大きい5 > 2True
>=以上5 >= 5True
is同一オブジェクトx is None(x 次第)

Python

print(3 == 3) # True print(3 == 4) # False print("abc" == "abc") # True print(3 != 4) # True print(5 > 2) # True print(5 <= 5) # True

上の例のとおり、比較演算子は数値どうしだけでなく文字列にも使えます。文字列の == は「文字が完全に一致するか」を判定するので、"abc" == "abc"True"abc" == "ABC" は大文字小文字が違うため False になります。日本語の文字列でも同じルールで動き、"猫" == "猫"True です。

動きを追ってみる

比較演算子の結果は bool 型なので、変数に代入して使い回せます。たとえば result = a == b のように書けば、後の処理で if result: と判定に再利用できます。さらに print(type(result)) で確認すると <class 'bool'> と表示され、純然たる TrueFalse の値が返っていることが分かります。次の図は、compare(a, b)== で比較したときの分岐イメージです。

diagram (will load when visible)

図と同じ流れを箇条書きで書き直すと、次の通りです。

  1. 入力として ab を受け取る
  2. a == b を評価する
  3. 結果が真であれば True を返す
  4. 結果が偽であれば False を返す

比較演算子は副作用がない純粋な演算なので、何度評価しても同じ結果になります。テストが書きやすいのもメリットです。

比較は連結することもでき、1 < x < 10 のように書けば「1 より大きく 10 より小さい」を 1 行で表現できます。これは後のレッスンで扱う「連鎖比較」の話につながります。今回はまずシンプルな 2 値の比較に集中し、== != < > の感覚をつかみましょう。

よくある間違い

比較で初心者がつまずきやすいのは次の 3 つです。

  1. === の取り違え。if x = 3: と書くと構文エラーになります
  2. 異なる型どうしの比較。"3" == 3False になります
  3. None== で比較してしまう。if x == None: より if x is None: を使うのが慣習です

None の比較だけは is を使う、と覚えておくと安全です。リンタやコードレビューでも頻繁に指摘されるポイントです。

以下は失敗しやすいパターンの一例です。型が違うと値が同じに見えても等しくならない点に注意します。一方で intfloat は数値として比較されるので、3 == 3.0True になります。bool も内部的には int の一種なので True == 1True です。

Python

print("3" == 3) # False (型が違う) print(3 == 3.0) # True (int と float は値で比較) print(True == 1) # True (bool は 1 と 0 に対応) print(None == 0) # False (None と 0 は別物)
この章のポイント

ここまでの要点 比較演算子は左辺と右辺を比べて bool を返す。== は値の比較、is はオブジェクト同一性の比較。None の判定だけは is None を使う。

やってみよう

今回の課題は、引数 ab を受け取り、両者が等しいかどうかを bool で返す関数 is_equal(a, b) を書くことです。中身は return a == b の 1 行で済みますが、まずは「比較演算子の戻り値がそのまま bool になる」ことを体感してください。応用として != で書き換えたり、not を組み合わせて反転させたりすると理解が深まります。さらに数値・文字列・None などさまざまな引数を渡して、自分の予想と結果がどう一致するかを確かめてみると比較演算子の挙動が身体に馴染んでいきます。

よくある質問

Q. = は何が違いますか?

A. JavaScript の は型変換してから比較するため 0 '0' が true になります。= は型も値も一致した場合のみ true で、こちらが基本です。Python には = はなく、 は値、is は同一オブジェクトか(メモリ位置)の判定なので使い分けてください。

Q. 文字列の大小比較はどうなりますか?

A. ほとんどの言語で辞書順(文字コード順)に比較されます。'apple' < 'banana' は true、'10' < '9' は文字列としては true('1' < '9' のため)になるので、数値比較したいときは必ず Number()/int() で変換してから比較しましょう。

Q. 浮動小数点の比較で要注意な点は?

A. 0.1 + 0.2 0.3 は多くの言語で false になります。誤差を許容するため abs(a - b) < 1e-9 のように差の絶対値で比較するのが定石です。お金の計算は浮動小数を避け、整数(円単位の int)や Decimal 型を使ってください。

次のレッスン

次は 論理演算子 で、== と != で値を比較し、bool 値を返す関数を書きます を学びます。

事前確認 — 進む前に次の 3 つができることを確認しましょう。

  1. 比較演算子 の要点を自分の言葉で説明できる
  2. このレッスンの最小コード (または操作手順) を見ずに書ける
  3. 練習問題やクイズで間違えた箇所を読み直して理解した

理解度チェック (30 秒)

Q. 比較演算子 とは何か、1 文で説明してください。

この章のポイント

A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。

関連レッスン

要件

  1. == を使って比較する
  2. 戻り値は True か False のいずれか
  3. if 文は使わずに 1 行で書ける

入出力例

test-cases.txt

is_equal(3, 3)true is_equal(3, 4)false is_equal("abc", "abc")true is_equal("3", 3)false is_equal(3, 3)true

ヒント

main.py
main.py
学習モード

メモ

比較演算子

⌘S で保存