Python初心者向け!条件分岐におけるand, or, notの使い方

PRについて
※このサイトはアフィリエイト広告(Amazonアソシエイト含む)を掲載しています。
スポンサーリンク
※このサイトはアフィリエイト広告(Amazonアソシエイト含む)を掲載しています。
Python初心者向け!条件分岐におけるand, or, notの使い方 初心者向け
Python初心者向け!条件分岐におけるand, or, notの使い方
スッキリわかるPython入門

Pythonプログラミング初心者に向けて、条件分岐によく用いる演算子and・or・notについて解説します。

ごまこ
ごまこ

前回、if・elif・elseを組み合わせた条件分岐を勉強しました!
次はどんな勉強をやっていくんですか?

ごまお
ごまお

今回は「and・or・not」について学んでいきますよ。
「and・or・not」を使うと条件分岐をもっと細やかに扱うことができるんですよ!

これまで学んできたif文・elif文の条件式で用いていたbool型で用いるため、「and・or・not」はブール演算子と呼ばれることもあります。

まずは「and・or・notの基本」についてそれぞれ学んでいきます。

and・or・notの基本

それでは順番に「and・or・not」を解説していきます。

and

「and」は2つの条件を用いて、「num > 10 and num < 50」のように用います。

「and」は数学でも「num > 10 かつ num < 50」と用いられるように、andの前後の条件がともに満たされるかどうかを調べます。

andの前後の条件をそれぞれ条件A・条件Bとした時に「(条件A) and (条件B)」がどのように判定されるかをまとめたのが以下の表になります。

条件A条件B(条件A) and (条件B)
TrueTrueTrue
TrueFalseFalse
FalseTrueFalse
FalseFalseFalse
andの動作一覧

上の表のように「条件Aと条件BがともにTrue」の時だけ「True」となります。

「and」をプログラムの中で用いてみます。

animal = "seal"
num = 10

#2つの条件に対してandを用いた判定結果
print(animal == "seal" and num < 20)

#実行結果 True

変数はそれぞれ「animal = "seal"」「num = 10」としています。

print関数内ではandの前後の条件において
 ・「animal == "seal" 」は「True」
 ・「num < 20」は「True」
となります。

したがって、「True and True」となるので、andを用いた結果は「True」となります。

全く同じ条件をif文で用いると以下のようになります。

animal = "seal"
num = 10

#同じ条件をif文で用いた場合
if animal == "seal" and num < 20:
    print("アザラシは可愛い!")

#実行結果 アザラシは可愛い!

if文の条件式「animal == "seal" and num < 20」は1つ前のプログラムと同じですが「True」となります。

したがって、if文内の処理が実行され、「アザラシは可愛い!」と出力されます。

or

「or」は「and」と同様に2つの条件を用いて、「num < 10 or num > 50」のように用います。

「or」は数学でも「num < 10 または num > 50」と用いられるように、orの前後の条件のどちらかが満たされるかどうかを調べます。

orの前後の条件をそれぞれ条件A・条件Bとした時に「(条件A) or (条件B)」がどのように判定されるかをまとめたのが以下の表になります。

条件A条件B(条件A) and (条件B)
TrueTrueTrue
TrueFalseTrue
FalseTrueTrue
FalseFalseFalse
orの動作一覧

上の表のように「条件Aと条件Bのどちらか一方でもTrue」だと「True」となります。

つまり、「条件Aと条件BともにFalse」の時だけ「False」となります。

「or」をプログラムの中で用いてみます。

animal = "cat"
num = 15

#2つの条件に対してorを用いた判定結果
print(animal == "cat" or num > 20)

#実行結果 True

変数はそれぞれ「animal = "cat"」「num=15」としています。

print関数内ではorの前後の条件において
 ・「animal == "cat" 」は「True」
 ・「num > 20」は「False」
となります。

したがって、「True or False」となるので、orを用いた結果は「True」となります。

全く同じ条件をif文で用いると以下のようになります。

animal = "cat"
num = 15

#同じ条件をif文で用いた場合
if animal == "cat" or num > 20:
    print("ネコ可愛い!")

#実行結果 ネコ可愛い!

if文の条件式「animal == "cat" or num > 20」は1つ前のプログラムと同じですが「True」となります。

したがって、if文内の処理が実行され、「ネコ可愛い!」と出力されます。

not

「not」は条件の前に記載し「not num > 10」のように用います。

「not」は数学でも「num>10 ではない」と用いられるように、条件を否定して「True」「False」を反転する際に用います。

notをある条件に用いた時に「not (条件)」がどのように判定されるかをまとめたのが以下の表になります。

条件not (条件)
TrueFalse
FalseTrue
andの動作一覧

上の表のように「条件のTrue・Falseが反転してそれぞれFalse・True」になります。

「not」をプログラムの中で用いてみます。

animal = "seal"

#2つの条件に対してandを用いた判定結果
print(not animal == "cat")

#実行結果 True

変数はそれぞれ「animal = "seal"」としています。

print関数内では「animal == "cat" 」は「False」となるので、この結果をnotでTrue・Falseを反転します。

したがって、「not False」となるので、notを用いた結果は「True」となります。

全く同じ条件をif文で用いると以下のようになります。

animal = "seal"

#同じ条件をif文で用いた場合
if not animal == "cat":
    print("ネコじゃなくても可愛い!")

#実行結果 ネコじゃなくても可愛い!

if文の条件式「not animal == "cat"」は1つ前のプログラムと同じですが「True」となります。

したがって、if文内の処理が実行され、「ネコじゃなくても可愛い!」と出力されます。

ごまこ
ごまこ

and・or・notの使い方を理解できました。
確かに条件分岐をもっと細やかに使えそうですね!

ごまお
ごまお

and・or・notのイメージをつかめたみたいで良かったです。
実は以前に説明したプログラムもandを使うと上手く書くことができますよ!
最後に、そのプログラムを紹介するきゅ~!

以前、条件式の順番の重要性について学びましたが、この時に用いたプログラムをorを用いることで別の書き方ができます。

参考 条件式の順番を考慮しないプログラム例

以前、if文・elif文の条件式の順番で条件式の順番を考慮したプログラムは以下のようになります。

num = 15

if num >= 20:
    print("numの値は20以上です!")
elif num >= 10:
    print("numの値は10以上です!")
elif num >= 0:
    print("numの値は0以上です!")

#実行結果 numの値は10以上です!

条件式の順番を考慮しないと別の条件式で「True」となってしまい、狙い通りの条件分岐を行えないというプログラムでした。
 ※詳細は以下のリンク記事を参照ください

しかし、今回学んだandを用いると条件式の順番を考慮しないようなプログラムも書くことができます。

以下のプログラムを見てみましょう。

num = 15

if num >= 0 and num < 10:
    print("numの値は0以上です!")
elif num >= 10 and num < 20:
    print("numの値は10以上です!")
elif num >= 20:
    print("numの値は20以上です!")

#実行結果 numの値は10以上です!

このプログラムのように、変数numの値に対して、andを使うことでnumの値の範囲を限定すれば条件式の順番を考慮しなくても同様のプログラムを書くことができます。

ただし、条件式の順番の考え方も重要です!

今回学んだor・and・notを使った場合にも、より複雑なプログラムだと条件式の順番を考慮しなければならない場面はたくさんあります。

まとめ

今回はand・or・notについて解説しました。

if文などの条件分岐において、複数の条件を用いてより細やかな分岐を行う上では必須の考え方だと感じます。

まずは使い方に慣れて、より自由に条件分岐を用いたプログラムが書けるようになっていただければと思います!

このサイトの記事一覧へは以下へアクセス!

Python2年生 デスクトップアプリ開発のしくみ
初心者向け
ゴマフリーダムをフォローする

コメント

達人に学ぶDB設計 徹底指南書

最短コースでわかる ディープラーニングの数学

あたらしい機械学習の教科書 第3版

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

タイトルとURLをコピーしました