プログラミング

Step 10: if文で使う「比較演算子」と「論理演算子」

Step 10: if文で使う「比較演算子」と「論理演算子」

概要

フリーランスエンジニア スリーネクスト

Pythonプログラミングにおける条件分岐の核となる「比較演算子」と「論理演算子」の基礎を解説します。まず、==や>などの比較演算子を使い2つの値を比べてTrue/Falseを得る方法を学びます。

次に、andやorといった論理演算子で複数の条件を組み合わせ、より複雑な判定を行う方法を図解と共に説明。豊富なコード例を通して、初心者でもif文を自在に使いこなし、状況に応じて処理を変化させる実践的なスキルを習得することを目指します。

目次
「ゼロから始めるPython学習」各ステップのタイトル案
ゼロから始めるPython学習 STEP20目次

プログラミング未経験者向けPython入門講座。環境構築から変数、if文、for文、関数といった基本までを20のステップでわかりやすく解説します。自分のペースで一歩ずつ着実に学び、プログラミングの第一歩を踏み出しましょう!

続きを見る

はじめに

プログラミングの世界では、「もし〇〇だったら、△△する」というように、状況に応じて処理の流れを変えることが頻繁にあります。これを条件分岐と呼び、Pythonではif文を使って実現します。

このif文の「もし〇〇だったら」という条件を作るために不可欠なのが、今回学ぶ**比較演算子(ひかくえんざんし)論理演算子(ろんりえんざんし)**です。これらを使いこなすことで、単純なものから複雑なものまで、様々な条件を自由に組み立てられるようになります。

このステップでは、この2種類の演算子をマスターし、if文をより強力なツールにしていきましょう!


比較演算子:2つの値を比べる「ものさし」

比較演算子は、その名の通り、2つの値を比較するための記号です。左辺と右辺の値を比べて、「正しい(True)」か「間違っている(False)」かを判定します。このTrueFalseの結果を使って、if文は次に進むべき道を選びます。

主な比較演算子を下の表にまとめました。

演算子意味使用例結果
==等しい (equal)5 == 5True
!=等しくない (not equal)5 != 3True
>より大きい (greater than)5 > 3True
<より小さい (less than)5 < 3False
>=以上 (greater than or equal to)5 >= 5True
<=以下 (less than or equal to)5 <= 3False

注意点: 「等しい」を表すのは = ではなく == です。= 1つは、変数に値を代入するための「代入演算子」なので、間違えないように注意しましょう。

具体的な使い方

実際にコードで見てみましょう。

age = 20

# ageが20と等しいか?
if age == 20:
    print("あなたは20歳です。") # こちらが実行される

# ageが18より大きいか?
if age > 18:
    print("あなたは18歳より年上です。") # こちらも実行される

if文は、:の前の条件式がTrueになった場合にのみ、その直後にあるインデント(字下げ)されたブロックの処理を実行します。

この条件分岐の様子をフローチャートで見てみましょう。

graph TD
    A[プログラム開始] --> B{age > 18?};
    B -- True(はい) --> C["「あなたは18歳より年上です。」と表示"];
    B -- False(いいえ) --> D[何もしない];
    C --> E[次の処理へ];
    D --> E;

このように、比較演算子はプログラムの流れを分けるための「分岐点」を作る役割を担っています。数値だけでなく、文字列を比較することも可能です。

Python

weather = "晴れ"

if weather == "晴れ":
    print("傘は必要ありません。")
else:
    print("傘を持って行った方が良いかもしれません。")

論理演算子:複数の条件を組み合わせる「接着剤」

もし、「20歳以上、かつ、男性」や「天気が晴れ、または、曇り」のように、複数の条件を組み合わせて判断したい場合はどうすればよいでしょうか。そこで登場するのが論理演算子です。

論理演算子は、TrueFalseといった真偽値を操作して、複数の条件を1つにまとめる働きをします。主な論理演算子はandornotの3つです。

and (かつ)

andは、両方の条件がTrueの場合にのみ、全体としてTrueになります。一つでもFalseがあれば、結果はFalseです。

  • 条件A and 条件B
  • AもBも正しい時に、全体が正しいと判断するイメージです。
graph TD
    subgraph "and演算子 (A and B)"
        direction LR
        A[条件A]
        B[条件B]
        A -- True --> C{条件Bは?};
        A -- False --> D[結果: False];
        C -- True --> E[結果: True];
        C -- False --> D;
    end

使用例: 遊園地の乗り物に乗る条件(身長130cm以上、かつ、年齢10歳以上)

height = 140
age = 12

if height >= 130 and age >= 10:
    print("ご乗車いただけます。") # こちらが実行される
else:
    print("申し訳ありませんが、ご乗車いただけません。")

# 条件の一方でも満たさない場合
height = 120
age = 12

if height >= 130 and age >= 10:
    print("ご乗車いただけます。")
else:
    print("申し訳ありませんが、ご乗車いただけません。") # こちらが実行される

or (または)

orは、どちらか一方の条件でもTrueであれば、全体としてTrueになります。両方がFalseの場合にのみ、結果はFalseです。

  • 条件A or 条件B
  • AかBのどちらか一方でも正しければ、全体を正しいと判断するイメージです。
graph TD
    subgraph "or演算子 (A or B)"
        direction LR
        A[条件A]
        B[条件B]
        A -- True --> C[結果: True];
        A -- False --> D{条件Bは?};
        D -- True --> C;
        D -- False --> E[結果: False];
    end

使用例: ショップの割引条件(会員である、または、クーポンを持っている)

is_member = True
has_coupon = False

if is_member or has_coupon:
    print("割引が適用されます。") # こちらが実行される
else:
    print("割引は適用されません。")

# どちらの条件も満たさない場合
is_member = False
has_coupon = False

if is_member or has_coupon:
    print("割引が適用されます。")
else:
    print("割引は適用されません。") # こちらが実行される

not (ではない)

notは、条件のTrue/False反転させます。Trueの条件につけるとFalseに、Falseの条件につけるとTrueになります。

  • not 条件A
  • Aが正しくない時に、全体が正しいと判断するイメージです。
graph TD
    subgraph "not演算子 (not A)"
        direction LR
        A[条件A] -- True --> B[結果: False];
        A -- False --> C[結果: True];
    end

使用例: ゲームのゲームオーバー条件(HPが0ではない = HPが0より大きい)

is_game_over = False

# ゲームオーバーではない間、ループを続けるというような処理でよく使われる
if not is_game_over:
    print("ゲームは続行中です。") # こちらが実行される

is_game_over == False と書くのと同じ意味ですが、notを使うとよりシンプルに記述できます。


比較演算子と論理演算子の組み合わせ

これらの演算子を組み合わせることで、さらに複雑で現実的な条件を作ることができます。

例: 成績評価システム

  • 80点以上 かつ 提出物を全て出していれば「優」
  • 60点以上80点未満であれば「良」
  • それ以外は「可」
score = 85
submitted_all = True

if score >= 80 and submitted_all == True:
    print("評価は「優」です。")
elif score >= 60: # この時点でscore < 80は確定している
    print("評価は「良」です。")
else:
    print("評価は「可」です。")

この例では、比較演算子 (>=) と論理演算子 (and) を組み合わせて、最初のif文の条件 score >= 80 and submitted_all == True を作っています。

演算子の優先順位

複雑な条件式では、どの演算が先に実行されるかという優先順位があります。一般的に、

  1. 比較演算子 (>, == など)
  2. not
  3. and
  4. or

の順番で評価されます。しかし、これをすべて覚えるのは大変です。 読みやすく、間違いを防ぐために、優先させたい計算を () で囲むことを強くお勧めします。

# 例: 年齢が20歳以上、または、学生であり、かつ、招待状を持っている人
age = 18
is_student = True
has_invitation = True

# ( ) を使わないと意図しない結果になる可能性がある
if age >= 20 or is_student and has_invitation:
    # andが先に評価されるため (age >= 20) or (is_student and has_invitation) と同じ意味
    print("入場できます。")

# ( ) を使って意図を明確にする
if (age >= 20 or is_student) and has_invitation:
    # orが先に評価され、「20歳以上または学生」というグループを作り、その上で招待状の有無を判断
    print("入場できます。")

まとめ

今回は、if文の条件式を作るための重要な部品である比較演算子論理演算子について学びました。

  • 比較演算子 (==, !=, >, < など) は、2つの値を比較して TrueFalse を返す「ものさし」。
  • 論理演算子 (and, or, not) は、True/Falseを組み合わせて、より複雑な条件を作る「接着剤」。

これらの演算子をマスターすれば、プログラムに「考える力」を与え、様々な状況に柔軟に対応させることができます。最初は少し難しく感じるかもしれませんが、実際にコードを書きながら色々な条件を試していくうちに、必ず使いこなせるようになります。プログラムの流れを自在にコントロールする楽しさを、ぜひ味わってください。

目次
「ゼロから始めるPython学習」各ステップのタイトル案
ゼロから始めるPython学習 STEP20目次

プログラミング未経験者向けPython入門講座。環境構築から変数、if文、for文、関数といった基本までを20のステップでわかりやすく解説します。自分のペースで一歩ずつ着実に学び、プログラミングの第一歩を踏み出しましょう!

続きを見る

-プログラミング