【Python初心者】ブール型・比較演算子・論理演算子【リスキリング】

Programming
スポンサーリンク

 

Pythonを勉強するために本を買ったけど,積読してる.
最初の方の数値や算術演算,文字列の扱いで止まっている.
「ブール」って何?
比較演算子や論理演算子ってたくさんあるけど整理したい.

 そんな方が,ブール型・比較演算子・論理演算子を理解して,if文,while文, for文などの制御構文の学習に進むための記事です.
 

本記事の内容

 

 これまでの記事で,整数,浮動小数点数,文字列,リスト,タプル,辞書,集合と,Pythonであらかじめ準備された組み込みデータ型(組み込みクラス)を学んできました.その中で,算術演算子(+, – など)や代入演算子(=, += など)を扱ってきました.本記事では,比較演算子,論理演算子について解説します.比較演算子は,ある条件の大小を比較する演算子です.論理演算子は,複数の条件を組み合わせる演算子です.比較演算や論理演算では,ブールというデータ型を使用して評価することが多いです.まずは,このブールについて学び,比較演算と論理演算で使ってみましょう.これまでの記事と同様に,コードを打ちながら学んで行きましょう.余力のある方は,部分的にコードを変更して実験してみましょう.
 

 

スポンサーリンク

ブール型

 これまで,Pythonであらかじめ準備された組み込みデータ型(組み込みクラス)を学んできました(表1).ブールの値は,「True」と「False」の2つのみです.各々「真」,「偽」を意味します.一般的な使い方は,値の比較などの条件が,「真」ー条件が成立するかー,または,「偽」ー成立しないかーの評価です.
 

表1. Pythonデータ型

型(クラス) ミュータブル シーケンス型
整数(int) × ×
浮動小数点数(float) × ×
複素数(complex) × ×
文字列(str) ×
ブール(bool) × ×
リスト(list)
タプル(tuple) ×
辞書(dict) ×
集合(set) ×

 

 

ブールの例

 後述する比較を用いて,ブールがどのように表示されるかをみてみましょう.

1 < 10 # 1が10未満かどうかを評価
True

 

1 > 10 # 1が10より大きいかどうかを評価
False

 

このように条件に対して,TrueまたはFlaseと出力されます.
 

 

ブールのルール

 Pythonは,何をTrue,Falseと見なしているのでしょうか?表2のような値は,すべてFalseと評価されます.
 

表2.Falseとなる値

ブール値 False
値の非存在 None
浮動小数点のゼロ 0.0
空文字列 ''
空リスト []
空タプル ()
空辞書 {}
空集合 set()

 

 

データ型の確認方法

 type()関数を使って確認します.「bool」と表示されるか確認してみましょう.

type(True)
bool

 

type(False)
bool

 

 

ブールへのデータ型の変換

 変換という語弊があるかも知れませんが,bool()関数を使ってデータ型を変換できます.表2で示した値はFalseと出力されます.
 

ブールに変換

bool(0)
False

 

bool([])
False

 

bool(['砂糖', '塩', '酢', '醤油', '味噌'])
True

 

ブールを整数に変換

int(True)
1

 

int(False)
0

 

ブールを浮動小数点数に変換

float(True)
1.0

 

float(False)
0.0

 

ブールを複素数に変換

complex(True)
(1+0j)

 

complex(False)
0j

 

 では,比較演算子,論理演算子を使用して,ブール型がいかに役立つかを見ていきましょう!
 

 

スポンサーリンク

比較演算子(<, >, <=, >=, ==, !=)


 比較演算子は,ある条件の大小を比較する演算子です(表3).Pythonでの比較演算子は表3の通り,小中学校で習ったものとほとんど同じ形式です.演算例のようにコードを入力して,実行するとTrueかFalseのブール値が返ってきます-正しければTrueが,誤りであればFalseが返ってきます.
 

表3.比較演算子

演算 比較演算子
より小さい・未満(小なり, 左不等号) <
以下(小なりイコール) <=
より大きい(大なり, 右不等号) >
以上(大なりイコール) >=
等しい(イコールイコール) ==
等しくない(ノットイコール) !=

 比較の条件の真偽を評価してみましょう.代表的な比較条件は数値なので, 数値を例に練習してみましょう.算術演算子を含む式や,変数に代入しても演算できます.
 

 

未満(小なり, 左不等号)

1 < 10
True

 

10 < 1
False

 

 

以下(小なりイコール) <=

10 <= 10
True

 

10 <= 1
False

 

 

より大きい(大なり, 右不等号) >

10 > 1
True

 

1 > 10
False

 

 

以上(大なりイコール) >=

10 >= 10
True

 

1 >= 10
False

 

 

等しい(イコールイコール) ==

10 == 10
True

 

1 == 10
False

 

 

等しくない(ノットイコール) !=

1 != 10
True

 

10 != 10
False

 

 

算術演算子を含む式や,変数を含む式

H = 1
He = 2
H < He
True

 

 

文字列の比較

 文字列についても比較演算子を使えますが,大小関係は文字コード (unicode)の番号で行われます.

"水素" < "ヘリウム"
False

 

"H" < "He"
True

 

 あくまでPython内で決められた定義や演算をもとに真偽が評価されます.
 

 

スポンサーリンク

論理演算子(and, or ,not)


 論理演算子は,複数の条件を組み合わせて,条件を評価する演算子です(表4).ブール演算子とも呼ばれます.後述のように,論理演算子は,算術演算子や比較演算子よりも優先順位が低いため,論理演算子を挟む条件部分が先に計算され,その後論理演算が行われます.
 論理演算の法則として,分配法則やド・モルガンの法則を高校数学で習ったと思います...論理演算の用途としては,「ある条件を満たすならAを,そうでないならBを実行する」などのプログラムの記述です.
 

表4.論理演算子

演算 論理演算子
論理積 and
論理和 or
否定 not

 

 論理条件の真偽を評価してみましょう.代表的な論理演算の条件は数値なので, 数値を例に(xに3.14を代入した変数を用いて)練習してみましょう.

 

x = 3.14

 

 

論理積

表5.論理積の組み合わせと結果

条件A 論理演算子 条件B 結果
True and True True
True and False False
False and True False
False and False False

 

 

x > 3.05 and x <=3.14 
# xが1より大きく,かつ,yが3.14以下
# 条件は共にTrue
True

 

x >= 3.05 and x < 3.14
# xが3.05以上,かつ,yが3.14未満
# x >= 3.05がTrueで,y < 3.14がFalse
False

 

 

変数が一つの場合,論理積を使用することなく条件を連結できる.

3.05 < x <= 3.14 
# x > 3.05 and x <=3.14と同じ.
True

 

 

論理和

表6.論理和の組み合わせと結果

条件A 論理演算子 条件B 結果
True or True True
True or False True
False or True True
False or False False

 

 

x >= 3.05 or x < 3.14 
# xが3.05以上,または,yが3.14未満
# x >= 3.05がTrueで,y < 3.14がFalse
True

 

x == 3.05 or x < 3.14  
# xが3.05,または,yが3.14未満
# 条件は共にFalse
False

 

 

否定

x = 3.14
not x >= 3.05 and x < 3.14
# xが3.05以上ではない(xが3.05未満),かつ,yが3.14未満
# not x >= 3.05がFalseで,y < 3.14がFalse
False

 

x >= 3.05 and not x < 3.14
# xが3.05以上,かつ,yが3.14より小さくない(xが3.14以上)
# x >= 3.05がTrueで,y < 3.14がTrue
True

 

 

not(not x > 3.05 or x < 3.14)   # ド・モルガンの法則
True

 

 

演算子の優先順位

 比較演算子.論理演算子を学び,さらに数値(整数,浮動小数点数,複素数)の記事で算術演算子も解説しましたね.
 ここで改めて,計算の優先順位を整理しましょう.数値の記事でも解説したように,結局のところ,実行したい計算の順番に合わせて丸括弧()を括れば正しく計算されます.

  1. ()の中
  2. **
  3. * / % //
  4. + -
  5. < > <= >= == !=
  6. not
  7. and
  8. or

 

ブール型と,比較演算子・論理演算子について,基本を学べましたでしょうか?
次は「制御構文」について学びましょう!

最後まで読んでくださり,ありがとうございます☺️

 

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