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) |
True | True | True |
True | False | False |
False | True | False |
False | False | False |
上の表のように「条件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) |
True | True | True |
True | False | True |
False | True | True |
False | False | False |
上の表のように「条件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 (条件) |
True | False |
False | True |
上の表のように「条件の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文などの条件分岐において、複数の条件を用いてより細やかな分岐を行う上では必須の考え方だと感じます。
まずは使い方に慣れて、より自由に条件分岐を用いたプログラムが書けるようになっていただければと思います!
このサイトの記事一覧へは以下へアクセス!
コメント