カテゴリ: Python 更新日: 2026/10/03

Pythonで複数の条件を組み合わせる方法!and・or・notの使い方

Pythonで複数の条件を組み合わせる方法!and・or・notの使い方
Pythonで複数の条件を組み合わせる方法!and・or・notの使い方

先生と生徒の会話形式で理解しよう

生徒

「Pythonで“この条件とあの条件が両方とも正しいとき”だけ処理をしたいんですが、どう書けばいいですか?」

先生

「その場合は『and』『or』『not』という論理演算子を使います。条件を組み合わせるときにとても便利ですよ。」

生徒

「それって難しくないですか?わかりやすく教えてください!」

先生

「大丈夫!日常の例を使って説明するので、きっとすぐ理解できますよ。」

1. Pythonの論理演算子とは?条件を組み合わせる基礎知識

1. Pythonの論理演算子とは?条件を組み合わせる基礎知識
1. Pythonの論理演算子とは?条件を組み合わせる基礎知識

Pythonでプログラミングをしていると、「もし〜かつ〜なら」や「〜または〜なら」といった、複数の条件を組み合わせて判断させたい場面が必ず出てきます。そんな時に欠かせないのが論理演算子(Boolean Operators)です。

論理演算子を使うことで、複雑な条件分岐をシンプルに記述できるようになります。Pythonで主に使われるのは、以下の3つの演算子です。

演算子 読み方・意味 結果がTrue(真)になる条件
and 論理積(かつ) 左右の条件がどちらも正しいとき
or 論理和(または) 左右の条件のどちらか一方が正しいとき
not 論理否定(〜ではない) 条件が正しくない(False)とき

例えば、プログラミング未経験の方でもイメージしやすいように、日常的な「お店の割引」を例に考えてみましょう。「土曜日」かつ「クーポンを持っている」という2つの条件を同時に満たしているかチェックしたい場合などに、これらの演算子が活躍します。


# 論理演算子のイメージ(変数を使った基本形)
is_weekend = True     # 土曜日である
has_coupon = True     # クーポンを持っている

# 両方の条件が揃っているか確認
if is_weekend and has_coupon:
    print("割引が適用されます!")

このように、if文やwhile文と組み合わせて使うことで、「特定の条件が揃ったときだけ処理を実行する」といった、より人間らしい柔軟な判断をプログラムに持たせることができるようになります。それでは、それぞれの演算子の具体的な使い方を詳しく見ていきましょう。

2. andの使い方:両方の条件が必要なとき(論理積)

2. andの使い方:両方の条件が必要なとき(論理積)
2. andの使い方:両方の条件が必要なとき(論理積)

and演算子は、日本語で言うところの「〜かつ〜」や「AもBも両方」という状態を表します。複数の条件がすべて「正しい(True)」と判断されたときだけ、特定の処理を実行させたい場合に非常に重宝します。

プログラミング未経験の方でもイメージしやすいように、「遊園地のアトラクションの利用条件」を例に考えてみましょう。たとえば、「身長が120cm以上」で、なおかつ「保護者が同伴している」という2つのハードルをどちらもクリアしなければならないケースです。


height = 125       # 身長125cm
has_guardian = True # 保護者が同伴している

# 両方の条件(120以上 かつ 同伴あり)を満たしているかチェック
if height >= 120 and has_guardian:
    print("アトラクションに乗ることができます!")
else:
    print("利用条件を満たしていません。")

アトラクションに乗ることができます!

このコードでは、height >= 120が正しい(True)であり、かつhas_guardianも正しい(True)ため、andによって全体の条件が成立し、メッセージが表示されます。

???? ここがポイント!
もし身長が150cmあっても、保護者がいない(False)場合は、andの片方が満たされないため、全体の判定は「False(正しくない)」となります。「どちらか一方がダメなら、全体もダメ」という厳しいルールを作りたいときは、このandを使いましょう。

3. orの使い方:どちらか1つでも条件を満たせばOK(論理和)

3. orの使い方:どちらか1つでも条件を満たせばOK(論理和)
3. orの使い方:どちらか1つでも条件を満たせばOK(論理和)

or演算子は、日本語の「または」「もしくは」に相当します。複数の条件のうち、最低でも1つが正しい(True)と判断されれば、全体の判定が「正しい」とみなされます。

プログラミング初心者の方に分かりやすい例として、「映画館の割引サービス」を想像してみましょう。例えば、「学生である」か「60歳以上のシニアである」か、どちらか一方に当てはまれば割引が受けられるという場面です。

[Image of logic gate or truth table]

is_student = True    # 学生である
is_senior = False    # シニアではない(60歳未満)

# どちらか一方の条件を満たしていれば割引を適用
if is_student or is_senior:
    print("特別割引料金が適用されます!")
else:
    print("通常料金になります。")

特別割引料金が適用されます!

このプログラムでは、is_seniorがFalseであっても、もう一方のis_studentがTrueであれば、orによって全体の条件が成立します。andと違って「どちらかが合格ならOK」という、少しハードルの低い条件設定をしたい時に使うのがポイントです。

???? 現場で役立つコツ
orは、左右のどちらかがTrueなら即座に「全体をTrue」と判断します。例えば、サイトのログイン画面で「メールアドレス、またはユーザーIDのどちらかを入力してください」といった、ユーザーに選択肢を与えるような柔軟な仕組みを作る際に欠かせない演算子です。

4. notの使い方:条件を反転したいとき(論理否定)

4. notの使い方:条件を反転したいとき(論理否定)
4. notの使い方:条件を反転したいとき(論理否定)

not演算子は、後に続く条件の結果を「真逆にする(反転させる)」という少しユニークな役割を持っています。日本語では「〜ではない」という意味になります。

例えば、「もし商品が在庫切れ(False)ではないなら、購入ボタンを表示する」といった、「〇〇でない場合」という判定を行いたい時に非常に便利です。True(正しい)はFalse(正しくない)に、FalseはTrueにひっくり返ります。

【イメージ図】
・not True = 偽(False)
・not False = 真(True)
[Image of logic gate not truth table]

プログラミング初心者の方が理解しやすいように、「ログイン状態」を例にした実用的なサンプルを見てみましょう。「まだログインが完了していない(False)」状態をnotで反転させて、メッセージを表示させる仕組みです。


# ログインしているかどうか(Falseは「していない」状態)
is_logged_in = False

# 「ログインしていない」場合にメッセージを出したい
if not is_logged_in:
    print("ログインしてください。サービスをご利用いただけます。")
else:
    print("ログイン済みです。マイページへどうぞ。")

ログインしてください。サービスをご利用いただけます。

このコードの仕組みを詳しく解説すると、まず変数 is_logged_in は False です。そこに not を付けることで not False、つまり判定結果が True(正しい) に変わります。その結果、if文の中身が実行されるという流れです。

???? 活用のヒント
「もし値が空だったら」「もしリストの中にデータが含まれていなかったら」など、Pythonでは「存在しないこと」や「否定」を条件にしたい場面が多くあります。そんな時にこのnotを使えば、コードが驚くほどスッキリと読みやすくなりますよ。

5. 実践!複数の条件を組み合わせて複雑な判定を作る方法

5. 実践!複数の条件を組み合わせて複雑な判定を作る方法
5. 実践!複数の条件を組み合わせて複雑な判定を作る方法

これまでは and や or を単体で見てきましたが、実際のプログラムではこれらを組み合わせて「より人間に近い判断基準」を作ることがよくあります。

例えば、「遊園地の夜間イベントへの入場チェック」をシミュレーションしてみましょう。条件は「18歳以上であること」、かつ「有効なチケットを持っていること」の2つを同時に満たす必要があるとします。


# ユーザーの情報
age = 19            # 年齢:19歳
has_ticket = True   # チケット:持っている

# 「18歳以上」かつ「チケットあり」の両方を満たすか判定
if age >= 18 and has_ticket:
    print("条件をクリアしました。夜間イベントに入場できます!")
else:
    print("申し訳ありませんが、入場条件を満たしていません。")

条件をクリアしました。夜間イベントに入場できます!

このコードのポイントは、if age >= 18 and has_ticket: という一行で、2つのハードルを一気にチェックしている点です。もし年齢が17歳だったり、チケットを忘れて(False)いたりすると、else 側の処理が実行されます。

???? 初心者向けの考え方
プログラミング未経験の方は、まず「何と何を同時に満たせばOKか?」を日本語で書き出してみるのが上達の近道です。その「かつ」の部分を and に置き換えるだけで、Pythonが理解できるコードに早変わりします。このように and と else をセットで使うことで、「合格」と「不合格」の両方のパターンに対応できる柔軟なプログラムが作れるようになります。

6. orとnotを組み合わせる!より高度で柔軟な条件分岐

6. orとnotを組み合わせる!より高度で柔軟な条件分岐
6. orとnotを組み合わせる!より高度で柔軟な条件分岐

これまでに学んだ or(どちらか一方)と not(〜ではない)を組み合わせると、Webサイトの閲覧制限やアプリの権限チェックなど、より実戦的で複雑なルールを簡単に作ることができます。

例えば、「18歳未満」または「ログインしていない人」のどちらか一方にでも当てはまれば、特定のページを見せないようにする「アクセス制限」の仕組みを考えてみましょう。

[Image of logic gate or truth table with not input]

# ユーザーの年齢とログイン状態を設定
age = 17
is_logged_in = False

# 「18歳未満」か、または「ログインしていない(not Trueではない)」かを確認
if age < 18 or not is_logged_in:
    print("【重要】このコンテンツは、18歳以上でログイン済みの方のみ視聴可能です。")
else:
    print("コンテンツを表示します。お楽しみください!")

【重要】このコンテンツは、18歳以上でログイン済みの方のみ視聴可能です。

このプログラムのポイントは、not is_logged_in の部分です。もし is_logged_in が False(ログインしていない)であれば、not によって True(条件に合致)に反転します。

その結果、or 演算子が「年齢制限に引っかかっている、またはログインしていない」のどちらかを検知し、安全にアクセスをブロックできるのです。このように or と not を使いこなすことで、「特定の条件に当てはまる人を除外する」という柔軟なプログラムが驚くほどスッキリと記述できるようになります。

???? 活用のヒント
「未成年はお断り」や「未登録ユーザーを制限」といった、『除外したい条件』が複数ある場合は、この or と not の組み合わせが最強のツールになります。日本語で「AかBのどちらかがダメならNG」と考える習慣をつけると、コードに落とし込みやすくなりますよ。

7. 複雑な条件にはカッコを使って整理しよう:優先順位の管理

7. 複雑な条件にはカッコを使って整理しよう:優先順位の管理
7. 複雑な条件にはカッコを使って整理しよう:優先順位の管理

複数の and や or を組み合わせて高度な条件分岐を作るようになると、「どの条件から先に判定されるのか」が重要になってきます。Pythonには演算の優先順位(決まった順番)がありますが、人間がパッと見て理解するのは少し大変です。

そこで役立つのがカッコ( )です。数学の計算と同じで、カッコで囲んだ部分は「ひとつの塊」として最優先で計算されます。これにより、意図しない判定ミスを防ぎ、誰が読んでも一目で意味がわかる「読みやすいコード」になります。

【優先順位のルール】
1. カッコ ( ) の中身
2. not(否定)
3. and(かつ)
4. or(または)

例えば、「18歳以上で、かつ会員である」という基本ルールに加えて、「会員でなくてもクーポンがあればOK」という例外を作りたい場合のコードを見てみましょう。


age = 20
is_member = False
has_coupon = True

# 「18歳以上の会員」か「クーポン所持者」のどちらかであればTrue
if (age >= 18 and is_member) or has_coupon:
    print("特典が利用できます。")
else:
    print("特典の対象外です。")

特典が利用できます。

このプログラムでは、まずカッコ内の age >= 18 and is_member がひとつの条件として処理されます。たとえ会員(is_member)が False でカッコ内が不合格になっても、その後の or has_coupon が True であれば、最終的に「特典利用OK」という結果を導き出せます。

???? メンテナンス性を高めるコツ
たとえカッコがなくても正しく動く順番だったとしても、あえてカッコをつけて「ここはひとつのまとまりですよ」と明示するのがプロのテクニックです。数ヶ月後の自分がコードを見返したときや、他の人にプログラムを教えるときに、カッコがあるだけで理解のスピードが格段に上がります。

8. and・or・notを使うときの注意点

8. and・or・notを使うときの注意点
8. and・or・notを使うときの注意点

and・or・notはとても便利ですが、条件の意味を正しく理解していないと逆の結果になることもあります。

特に、notを使うときは文の意味が逆になるので、注意が必要です。

たとえばif not is_memberと書くと、「会員でない場合」だけが条件に当てはまります。

日本語に置き換えて声に出して確認すると、ミスが減って理解も深まります。

9. Python初心者におすすめの練習法

9. Python初心者におすすめの練習法
9. Python初心者におすすめの練習法

論理演算子の練習には、「〇歳以上でチケットを持っていれば◯◯」などのルールを自分で作ってみるのが効果的です。

また、自分や友達の情報を使ったシミュレーションを作ってみるのも楽しくておすすめです。

and・or・notの使い方に慣れてくると、複雑な判断もPythonで簡単にできるようになりますよ!

まとめ

まとめ
まとめ

Pythonで複数条件を扱うための基本をしっかり振り返ろう

この記事では、Pythonで複数の条件を組み合わせて判定するために欠かせない、 and・or・notという三つの論理演算子について、初心者向けに丁寧に解説してきました。 プログラミングにおいて条件分岐は非常に重要であり、現実のルールや判断をコードに落とし込むための基礎になります。 年齢制限のチェック、ログイン状態の確認、会員かどうかの判定、割引や特典の適用条件など、 実際のWebアプリやシステム開発では、複数の条件を同時に確認する場面が数多く登場します。 そのため、Pythonの論理演算子を正しく理解することは、実用的なプログラムを書くための大きな一歩です。

andは「すべての条件が成り立つときだけ処理を行う」という場面で使われます。 「年齢が十八歳以上で、なおかつ会員である場合」や「ログイン済みで、かつ権限を持っている場合」など、 条件が一つでも欠けると処理してはいけないケースに非常に向いています。 Python初心者のうちは、if文の中に一つの条件しか書けないように感じるかもしれませんが、 andを使うことで、現実のルールに近い判断をコードとして表現できるようになります。

一方で、orは「どちらか一方でも条件を満たせばよい」という柔軟な判定に使われます。 クーポンを持っている場合や、プレミアムユーザーである場合など、 複数の救済条件を用意したいときに非常に便利です。 orを使いこなせるようになると、ユーザーにとって優しい条件設定や、 実用的な分岐処理を書けるようになります。

さらにnotは、条件を反転させるための演算子です。 「ログインしていない人」「会員ではない人」「条件を満たしていない場合」など、 否定の条件をシンプルに書けるのが特徴です。 ただし、notは意味が逆になるため、慣れないうちは混乱しやすいポイントでもあります。 そのため、コードを書くときには日本語に置き換えて読み上げてみると、 条件の意味を正しく理解しやすくなります。

まとめとしてのサンプルプログラム

ここで、and・or・notを組み合わせた、実践的で分かりやすいサンプルプログラムを確認してみましょう。 条件を整理するためにカッコを使うことで、処理の意味が一目で分かるようになります。


age = 20
is_member = False
has_coupon = True

if (age >= 18 and is_member) or has_coupon:
    print("サービスを利用できます。")
else:
    print("利用条件を満たしていません。")

この例では、「年齢が条件を満たしていて会員である」もしくは「クーポンを持っている」場合に、 サービスを利用できるという判定を行っています。 論理演算子とカッコを組み合わせることで、複雑な条件でも読みやすく整理されたコードになります。 Pythonでは、このように条件を段階的に考えながら書くことが、バグを減らすための重要なポイントです。

and・or・notを使いこなせるようになると、if文やwhile文の表現力が一気に広がります。 単純な条件分岐だけでなく、現実世界の細かなルールや例外処理をコードとして表現できるようになるため、 Pythonプログラミングの理解が一段深まったと感じられるでしょう。 今回学んだ内容は、今後関数やクラス、Webアプリ開発を学ぶ際にも必ず役立つ基礎知識です。

先生と生徒の振り返り会話

生徒

「andとorの違いが、日常の例と一緒に説明されていたので、とても分かりやすかったです。 条件を組み合わせるのが少し楽しくなってきました。」

先生

「それは良いですね。論理演算子は、プログラムの判断力を高める大切な要素です。 最初は難しく感じても、使ううちに自然と身についていきますよ。」

生徒

「notを使うときは、日本語で意味を確認すると間違えにくい、というのが特に印象に残りました。」

先生

「その通りです。条件分岐は、頭の中で整理しながら書くことが大切です。 カッコを使って整理する習慣も、これから意識していきましょう。」

生徒

「これからは、年齢チェックやログイン判定のような練習問題を自分でも作ってみます。」

先生

「とても良い学習方法ですね。and・or・notを自在に使えるようになれば、 Pythonで書けるプログラムの幅が一気に広がりますよ。」

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

Python の制御構造の記事一覧へ
新着記事
New1
Gemini
GeminiでPHPコードを学ぶ方法!初心者向けに始め方と学習手順を解説
New2
PHP
PHP のセッション変数を保存・取得・削除する方法
New3
PHP
PHP のコンストラクタ(__construct)とは?使い方を解説
New4
Claude
ClaudeでPythonデバッグを解決する方法!Pythonデバッグのエラーメッセージを長いログから読み解く方法
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonでディレクトリを作成・削除・一覧表示する方法!初心者向けにosとpathlibを使った使い方を解説
No.2
Java&Spring記事人気No2
Gemini
GeminiでPython自動化を始める時の質問文!目的と前提を伝えるコツ
No.3
Java&Spring記事人気No3
PHP
PHP のフォームデータの受け取り($_POST, $_GET)を完全解説!初心者向けガイド
No.4
Java&Spring記事人気No4
Claude
ClaudeにPHPコードをレビューしてもらう方法!安全性と保守性を同時に確認するチェックリスト
No.5
Java&Spring記事人気No5
Python
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.6
Java&Spring記事人気No6
Gemini
GeminiにPHPエラーを相談する時のコードの貼り方!原因特定を早めるコツ
No.7
Java&Spring記事人気No7
Claude
Claudeを使ったPythonコードレビューの進め方!設計意図と処理の流れを表で確認する質問例
No.8
Java&Spring記事人気No8
PHP
PHP のインストール方法(Windows・Mac・Linux)と開発環境