1. 食費で1200円なら True
  2. 食費でも900円なら False
  3. 娯楽で5000円でも False
  4. ちょうど1000円の食費は True
  5. カテゴリも金額も外れていれば False
  6. 食費で0円なら False
コース一覧
Python入門:基礎文法編
論理演算子

Python入門:基礎文法編

変数、条件分岐、ループ、関数、リスト・辞書、ファイル操作など Python の基礎文法を、ブラウザ上で毎レッスン実際にコードを書き、自分だけの「おこづかい帳アプリ」を育てながら学べる無料コースです。プログラミング完全未経験から始められ、環境構築や事前知識は一切不要です。約 18 時間 (1 日 30 分 × 37 日) で 74 レッスンを修了でき、修了後は入力・集計・ファイル保存まで備えたスクリプトを1から書けるようになります。

1
はじめての Python
01. printで表示15分
02. 文字列の連結15分
03. 四則演算15分
04. 実行順序15分
05. コメント15分
06. エラーを読んでみる15分
07. つくる:レシート表示15分
08. 第1章クイズ10分
2
変数とデータ型
01. 変数15分
02. typeで型を調べる15分
03. 数値への変換15分
04. 文字列への変換15分
05. boolとNone15分
06. f-string15分
07. 入力を受け取る15分
08. つくる:入力できるおこづかい帳15分
09. 第2章クイズ10分
3
演算子と式
01. 比較演算子15分
02. 論理演算子15分
03. in演算子15分
04. 剰余と切り捨て除算15分
05. 連鎖比較と優先順位15分
06. 三項演算子15分
07. つくる:予算チェック15分
08. 第3章クイズ10分
4
条件分岐
01. if文の基本15分
02. if / elif / else15分
03. 条件の組み合わせ15分
04. match文15分
05. 定番:FizzBuzz判定15分
06. デフォルト値とor15分
07. つくる:カテゴリ自動判定15分
08. 第4章クイズ10分
5
ループ
01. forで合計15分
02. whileで繰り返す15分
03. rangeとstep15分
04. breakとcontinue15分
05. enumerateで番号付け15分
06. zipで組み合わせ15分
07. 入れ子ループ15分
08. つくる:何件でも記録15分
09. 第5章クイズ10分
6
関数
01. 関数を定義する15分
02. 引数と戻り値15分
03. デフォルト引数15分
04. キーワード引数15分
05. 複数の戻り値15分
06. divmod15分
07. 変数のスコープ15分
08. lambda関数15分
09. つくる:関数に分割15分
10. 第6章クイズ10分
7
リストと辞書
01. リストの追加と削除15分
02. スライス15分
03. 辞書の基本15分
04. 辞書を走査15分
05. keyでソート15分
06. setで重複除去15分
07. リスト内包表記15分
08. タプルアンパック15分
09. つくる:カテゴリ別集計15分
10. 第7章クイズ10分
8
ファイルとエラー処理
01. ファイルを読み込む15分
02. ファイルに書き込む15分
03. withで安全に扱う15分
04. CSV形式で保存15分
05. try-exceptで備える15分
06. 例外の種類15分
07. つくる:保存機能15分
08. 第8章クイズ10分
9
総合制作
01. 全機能を統合しよう15分
02. 月間レポート機能15分
03. 自由拡張15分
04. 完成と次のステップ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 になるようにする

入出力例

is_big_food("食費", 1200) → true is_big_food("食費", 900) → false is_big_food("娯楽", 5000) → false is_big_food("食費", 1000) → true is_big_food("交通費", 200) → false is_big_food("食費", 0) → false

ヒント

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 で保存