コース一覧
    Python演算子・制御フロー
    論理演算子

    Python演算子・制御フロー

    演算子と条件分岐の使い方を学び、値の比較と分岐を組み合わせた処理を実装できるようにします。

    1
    演算子と式
    01. 比較演算子15分
    02. 論理演算子15分
    03. in演算子15分
    04. 剰余と切り捨て除算15分
    05. 連鎖比較と優先順位15分
    06. 三項演算子15分
    07. つくる:予算チェック15分
    08. 第3章クイズ10分
    2
    条件分岐
    01. if文の基本15分
    02. if / elif / else15分
    03. 条件の組み合わせ15分
    04. match文15分
    05. 定番:FizzBuzz判定15分
    06. デフォルト値とor15分
    07. つくる:カテゴリ自動判定15分
    08. 第4章クイズ10分

    論理演算子

    and と or の違い

    条件が 2 つ重なると、もう書けない

    前回で、1 つの条件を True か False に変えられるようになりました。ただ実際の判定は「金額が大きくて、しかも食費のとき」のように、条件が 2 つ以上重なることがほとんどです。

    条件どうしをつなぐのが 論理演算子 です。and と or と not の 3 つで、記号ではなく英単語なのが Python らしいところです。

    and は両方、or はどちらか

    and は左右の 両方 が True のときだけ True になります。or は どちらか一方 が True なら True です。

    Python

    rest = 800
    days = 3
    print(rest >= 500 and days <= 5)
    print(rest >= 1000 or days <= 5)

    上は両方満たしているので True。下は前半が外れていますが、後半が当たっているので True です。他の言語の && や || は Python では使えず、SyntaxError になります。

    and の右側にも完全な条件を書いてください。rest >= 500 and days のように条件の形をしていないものを置くと、意図した意味になりません。

    残りの not は、1 つの値の前に置いて True と False を反転します。

    Python

    print(not (days > 10))

    これは days <= 10 と同じ意味です。多くの場合、not を使わずに書けるならそちらのほうが読みやすくなります。二重否定は書けますが、読み手を混乱させるので避けてください。

    左が外れたら、右は見ない

    論理演算子には強さの順番があり、not がいちばん強く、次が and、いちばん弱いのが or です。比較はそれより先に済むので、rest >= 500 and days <= 5 は (rest >= 500) and (days <= 5) と同じ意味になります。迷ったらかっこを付けて構いません。動きを変えずに、意図だけをはっきりさせられます。

    and は、左が False になった時点で結果が決まるので、右を見ずに打ち切ります。これを 短絡評価 と呼びます。or は逆に、左が True なら右を見ません。

    やってみよう

    関数 is_big_food を実装してください。引数は category と price の 2 つで、category が "食費" と等しく、かつ price が 1000 以上のときだけ True を返します。それ以外は False です。

    is_big_food("食費", 1200) は True、is_big_food("食費", 900) は False、is_big_food("娯楽", 5000) も False です。

    ちょうど 1000 円のときは「1000 円以上」に含まれるので True になります。or でつなぐと 100 円の食費まで当たってしまうので、日本語の「かつ」と対応しているかを確かめてください。

    要件

    1. 関数名は is_big_food で、引数は category と price の2つ
    2. category が "食費" と等しく、かつ price が 1000 以上のときだけ True を返す
    3. 条件をつなぐには and を使う(&& は使えない)
    4. ちょうど 1000 円のときは True になるようにする

    ヒント

    return category == "食費" and price >= 1000 の1行で書けます

    「かつ」は and、「または」は or です

    「1000円以上」は >= です。> にすると1000円ちょうどが漏れます

    文字列の比較は == を使います。= 1つは代入なので使えません

    生田 陸人
    監修生田 陸人
    ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
    編集 ゆめさく編集部·公開 2026/08/05·更新 2026/08/26

    関連レッスン

    • in演算子

      in と not in でまとまりに含まれるかを調べ、使えるカテゴリかを判定する

    • 剰余と切り捨て除算

      // で商、% で余りを求め、割り勘の1人分と端数を計算する

    • 連鎖比較と優先順位

      0 <= price <= budget の連鎖比較と、演算子が計算される順番を整理する

    • 三項演算子

      A if 条件 else B で値を2択に切り替え、予算内かオーバーかのラベルを返す

    このレッスンに出てくる用語

    意味があいまいなまま進んだ語は、ここから読み直せます。

    • 論理演算子and=両方True、or=どちらかTrue、not=反転。
    • 演算子//は切り捨て除算(7 // 2 = 3)。
    • 評価出力品質を数値化して継続改善する活動
    • 関数処理に名前を付けて再利用できる単位
    • 引数位置引数=順番で渡す。
    main.py
    エディタを読み込んでいます

    メモ

    論理演算子

    ⌘S で保存