Pythonの論理式
記事の内容
この記事では、Pythonのif文で利用する論理式や、論理式で用いられる主な演算子について説明します。if文やwhile文で論理式を書いて条件を記述するときの索引としてご利用ください。
***わからない用語があるときは索引ページへ***
1.比較演算子
比較演算子とは、論理式で用いられる演算子です。2つのデータ(オブジェクト)を比較して、演算子の条件を満たす場合はTrue、満たさない場合はFalseの演算結果となります。具体的にどのようなものがあるか見たほうが早いので、以下を確認してみましょう。
■data1 > data2
左辺のデータが右辺のデータより大きい場合にTrue、小さい場合にFalseとなる。文字列も比較できる。文字列の比較の場合は、文字列を昇順に並べ替えたときに前に来る方が小さくなる。日本語などのマルチバイト文字の場合は文字列コードを見て大小を判別している。実際のところ文字列の比較はすべて文字コードをみて大小を判別している。
左辺、右辺は式で書いても良い。
##数値の比較
print("3 > 5 ?", 3 > 5)
print("5 > 3 ?", 5 > 3)
##文字列の比較
print('"ab" > "ac" ?', "ab" > "ac")
print('"ac" > "ab" ?', "ac" > "ab")
##左辺と右辺は式でも書ける
print("1 + 1 > 2 + 2 ?", 1+1>2+2)
出力結果
3 > 5 ? False
5 > 3 ? True
"ab" > "ac" ? False
"ac" > "ab" ? True
1 + 1 > 2 + 2 ? False
■data1 >= data2
左辺のデータが右辺のデータ以上の場合にTrue、小さい場合にFalseとなる。使い方は">"と同じ
以下、説明を簡略化して条件式の演算結果がTrueになる条件のみ記載します。Trueになる条件を満たさないときはFalseになります。左辺と右辺が等しいかどうかの比較は、"="ではなく、"=="です。"="は代入演算子です。
■data1 < data2:左辺が右辺未満
■data1 <= data2:左辺が右辺以下
■data1 == data2:左辺と右辺が等しい
■data1 is data2:左辺と右辺が等しい
■data1 != data2:左辺と右辺が等しくない
■data1 is not data2:左辺と右辺が等しくない
■elem in iterable_obj
比較演算子inを使って、リストやタプルなどの、イテラブルなオブジェクトに要素elemが含まれているかどうかを調べることもできます。演算結果は、elemが含まれていればTrue、含まれていなければFalseになります。
list1 = [0, 1, 2, 3, 4]
print("list1 =", list1、"\n")
print("2 in list1 ?", 2 in list1)
print("5 in list1 ?", 5 in list1)
出力結果
list1 = [0, 1, 2, 3, 4]
2 in list1 ? True
5 in list1 ? False
2.論理演算子
論理演算子とは、bool型データの演算子です。and、or、notの3種類があります。
上記1で説明した条件式は、演算結果がbool型データになるので、論理演算子は条件式と組み合わせて使うことが多いです。それぞれ説明します。
■bool1 and bool2
bool1とbool2の値(またはbool1とbool2の論理式の演算結果)がどちらもTrueの場合、演算結果がTrueとなり、それ以外はFalseとなります。日本語では「かつ」と訳されます。ここで、論理式とは、上記で説明した比較演算子をつかった条件式などのことです。
False and False -> False
False and True -> False
True and False -> False
True and True -> True
■bool1 or bool2
bool1とbool2の値(またはbool1とbool2の論理式の演算結果)のどちらか一方がTrueの場合、演算結果がTrueとなり、どちらもFalseのときのみFalseとなります。日本語では「または」と訳されます。
False or False -> False
False or True -> True
True or False -> True
True or True -> True
■not bool1
boolデータの値を反転させます。TrueはFalseに、FalseはTrueに反転されます。使い方を見てみましょう。
a = 3
b = 5
if not(a >= b):
print("aはb以上ではありません")
else:
print("aはb以上です")
のような使い方をします。このサンプルでは、if部の条件"a >= b"の演算結果はFalseになりますが、notで反転してTrueになっています。
出力結果
aはb以上ではありません