Python | not 演算子

Python
スポンサーリンク

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 と書くと、notageではなく式全体にかかりますが、読みづらく誤解を招きます。初心者は 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は条件の真偽を反転する。
  • コツ: 括弧で範囲を明確にし、必要に応じて比較演算(>=, ==など)と使い分ける。
  • 実践: 空/未設定のチェックや「〜ではない」を簡潔に書きたいときに使うと読みやすくなる。
Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました