論理演算子
比較演算子を使えば簡単な条件判断は可能ですが、「a と bが等しい」且つ「c は dよりも大きい」など条件式を組み合わせた複雑な条件式を記述するには論理演算子を使います。
Pythonで用意されている論理演算子は次の通りです。
演算子 | 記述例 | 意味 |
---|---|---|
and | a and b | aとbが共に真の場合に真 |
or | a or b | aかbの少なくとも1つが真の場合に真 |
not | not a | aが真の時に偽、偽の時に真 |
論理演算子の優先順位については「演算子の優先順位」を参照して下さい。
「and」演算子及び「or」演算子の場合は左辺及び右辺にそれぞれ別の条件式を記述します。そしてそれぞれの条件式が真または偽となった時に、全体の式として真となるのか偽となるのかを論理演算子によって決定します。
「not」演算子の場合は右辺に条件式を記述します。そして条件式が真または偽となった時に、全体の式として真となるのか偽となるのかを論理演算子によって決定します。
論理積(AND)は演算子「and」の左辺及び右辺の条件式が共に真の場合のみ全体の式の評価が真となります。
左辺条件式 and 右辺条件式
左辺及び右辺の条件式の評価毎に式全体の評価がどうなるのかは次の通りです。
左辺 | 右辺 | 全体の式 |
---|---|---|
真 | 真 | 真 |
真 | 偽 | 偽 |
偽 | 真 | 偽 |
偽 | 偽 | 偽 |
具体的には次のように使用します。
old = 25 if old > 10 and old < 30: print "old is between 10 and 30"
上記では「old > 10」及び「old < 30」の条件式をそれぞれ評価します。今回はどちらも真(true)ですので「old > 10 and old < 30」も真(true)となります。
論理和(OR)は演算子「or」の左辺及び右辺の少なくともどちらか一つの条件式が真の場合に全体の式の評価が真となります。
左辺条件式 or 右辺条件式
左辺及び右辺の条件式の評価毎に式全体の評価がどうなるのかは次の通りです。
左辺 | 右辺 | 全体の式 |
---|---|---|
真 | 真 | 真 |
真 | 偽 | 真 |
偽 | 真 | 真 |
偽 | 偽 | 偽 |
具体的には次のように使用します。
old = 25 pref = "Tokyo" if old > 30 or pref == "Tokyo": print "old over 30 or pref is Tokyo"
上記では「old > 30」及び「pref == "Tokyo"」の条件式をそれぞれ評価します。今回「old > 30」は偽(false)ですが「pref == "Tokyo"」は真(true)のため「old > 30 or pref == "Tokyo"」も真(true)となります。
否定(NOT)は演算子「not」の右辺の条件式が真の場合に全体の式の評価が偽となり、右辺の条件式が偽の場合に全体の式の評価が真となります。
not 右辺条件式
右辺の条件式の評価毎に式全体の評価がどうなるのかは次の通りです。
左辺 | 全体の式 |
---|---|
真 | 偽 |
偽 | 真 |
具体的には次のように使用します。
old = 25 if not old < 20: print "old is not under 20"
上記では条件式「old < 20」を評価します。今回「old < 20」は偽(false)ですので「not old < 20」は真(true)となります。
では実際に試してみます。
#coding: UTF-8 old = 25 if old > 10 and old < 30: print "old is between 10 and 30" pref = "Tokyo" if old > 30 or pref == "Tokyo": print "old over 30 or pref is Tokyo" if not old < 20: print "old is not under 20"
上記を「test6-1.py」として保存します。保存する時の文字コードはUTF-8です。そして次のように実行して下さい。
( Written by Tatsuo Ikura )