Pythonの「not」演算子の基本
初心者向けに一言で言うと、notは「True/Falseをひっくり返すスイッチ」です。ある条件がTrueならFalseに、FalseならTrueにします。難しく感じるときは「その条件、逆にするとどうなる?」と考えるとわかりやすいです。
真理値と条件の考え方
- 真理値(ブール値):
True(正しい)とFalse(正しくない)。Pythonでは条件式の結果はこのどちらかになります。 - 条件式の例:
age < 10は年齢が10歳未満ならTrue、それ以外ならFalseになります。 - notの働き:
not (age < 10)はさきほどの結果を反転します。10歳未満ならFalse、10歳以上ならTrueになります。
例題で理解する
例題1:入場可否(年齢制限)
- 状況: 10歳未満は入場不可。それ以外は入場可。
- 素直な条件:
age < 10は「入場不可」の条件。 - 必要なのは「入場可」の条件: なので反転して使う。
age = 8
if not (age < 10):
print("入場できます")
else:
print("入場できません")
Python- 結果の解説:
age < 10はTrue(8は10未満)→not TrueでFalse → elseが実行される。
例題2:空文字チェック(入力の有無)
- 状況: ユーザーが何も入力しないと空文字
""。入力があれば非空文字。 - Pythonの特徴: 空文字は「偽(False)」として扱われます。文字があれば「真(True)」。
name = ""
if not name:
print("名前が未入力です")
else:
print(f"こんにちは、{name}さん!")
Python- ポイント:
not nameは「未入力(False)を反転してTrue」にするので、未入力のときにメッセージを出せます。
例題3:フラグ(スイッチ)を使った制御
- 状況: メンテナンス中はサービスを停止したい。
- 設計:
maintenance = Trueのとき停止、Falseのとき稼働。
maintenance = True
if not maintenance:
print("サービス稼働中")
else:
print("ただいまメンテナンス中です")
- 考え方:
「稼働中」を書きたいなら、メンテナンスの反対条件が必要なのでnot maintenanceを使う。
よくある落とし穴
- 丸括弧を忘れる:
not age < 10と書くと、notはageではなく式全体にかかりますが、読みづらく誤解を招きます。初心者はnot (age < 10)のように括弧で範囲をはっきりさせると安全です。 - 条件を言い換えすぎる:
not (age < 10)を「age >= 10に書き換える」こともできます。どちらでも正解ですが、元の条件を反転して使うほうが意図が明確な場面ではnotが読みやすいです。 - 真偽値以外にも使えるときがある:
リスト、文字列、数値などは「空/ゼロ/None」がFalse、そうでなければTrueとして扱われます。notはその「真偽としての値」をひっくり返します。
items = []
if not items:
print("リストが空です") # 空リストはFalse → notでTrue
Python使い分けのコツ
- 肯定形がわかりにくいときはnotで反転:
「これ以外」「〜ではない」を素直に書きたいならnotが便利です。 - 比較演算で明確に書けるなら比較を使う:
例:not (age < 10)よりage >= 10のほうが読みやすい場面も多いです。 - 複合条件と合わせるときは括弧で整理:
not (is_holiday or is_rainy)のように、まとまりごとに括弧で囲うと誤解が減ります。
is_holiday = False
is_rainy = True
if not (is_holiday or is_rainy):
print("出かけよう")
else:
print("今日はやめておこう")
Pythonミニ練習問題
- 問題1: 18歳未満は登録不可。それ以外は可。登録可の条件を
notを使って書いてください。 ヒント: 未満の条件を作って、最後に反転。 - 問題2: 入力されたパスワードが空ならエラーを表示。
notを使って書いてください。 - 問題3: 在庫リストが空なら「在庫なし」と出すコードを書いてください。
- 模範解答例:
# 問題1
age = 17
if not (age < 18):
print("登録できます")
else:
print("登録できません")
# 問題2
password = ""
if not password:
print("パスワードを入力してください")
else:
print("OK")
# 問題3
stock = []
if not stock:
print("在庫なし")
else:
print("在庫あり")
Pythonまとめ
- 本質:
notは条件の真偽を反転する。 - コツ: 括弧で範囲を明確にし、必要に応じて比較演算(
>=,==など)と使い分ける。 - 実践: 空/未設定のチェックや「〜ではない」を簡潔に書きたいときに使うと読みやすくなる。

