0から学ぶ【Python基礎】

Pythonの真偽値(True・False)と論理演算を完全理解!

前のページ|次のページ

6章では、Pythonにおける真理値(bool型)と論理演算子、比較演算子について解説します。

True、Falseを返す真理値とAND、OR、NOTを表現する論理演算子、『<』や『>』などの比較演算子は「if文などの条件式」によく使われます。

複雑なプログラムを作る上では必ず条件式が必要となるので、マスターしましょう

本連載講座【Python 基礎編】では、「プログラミング未経験の方」が挫折せずにPythonの基礎を学ぶことができます。

プログラミングを始めて学ぶ方が理解できるよう、丁寧に解説しています。

さらに、学んだ内容を身につけるための演習問題も用意しています。

・Pythonを挫折せずに学習したい

・無料でPythonを確実に習得したい

このような考えを持っている方は、Tech Teacherが運営する【Python 基礎編】を用いて、Pythonの学習をすることをお勧めします!

<目次>

1章:Pythonの特徴・概要
2章:環境構築と基本操作
3章:出力関数print()
4章:数値の型(int、float)と算術演算子
5章:文字列の操作(len・抽出・結合)
6章:真偽値(True・False)・論理演算(AND、OR、NOT)・比較演算子
7章:変数
8章:if文による条件分岐
9章:リストと辞書
10章:for・whileによる繰り返し(ループ)処理
11章:関数の作り方・使い方
12章:クラスとモジュール

真理値(bool型)とは

真理値(bool型)は真偽を表す型で、TrueまたはFalseのどちらかの値を取ります。

True
False

type()で型を確認してみましょう。

print(type(True))
print(type(False))
<class 'bool'>
<class 'bool'>

また、PythonではTrueint型の1Falseint型の0とそれぞれ等価です。

# print関数の中をコンマで区切ると空白1つ分空けて横並びに表示される
print('True:', int(True))
print('False:', int(False))

print(3 + True)
print(3 + False)
True: 1
False: 0
4
3

論理演算子(ブール演算子)

次に論理演算子について解説します。

論理演算子bool型に対して用いる演算子で、以下の3種類が存在します。

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

『and』『or』『not』はそれぞれ論理積論理和否定とも呼ばれます。

数学で論理と集合を学んだことがある方はイメージがつきやすいのではないでしょうか。

ではそれぞれの論理演算子について詳しく見ていきましょう。

論理積(and)

論理積

論理積(and)は、2つの値がどちらもTrueのときのみTrueを返します。

print(False and False)
print(False and True)
print(True and False)
print(True and True) 
False
False
False
True

2つの真理値A, Bに対して、A and Bは以下のようになります。(真理値表)

論理積 真理値表

論理和(or)

論理和

論理和(or)は、2つの値のうち少なくとも1つがTrueのときにTrueを返します。

print(False or False)
print(False or True)
print(True or False)
print(True or True) 
False
True
True
True

2つの真理値A, Bに対して、A or Bは以下のようになります。

論理和 真理値表

否定(not)

否定

否定(not)は、値がTrueならFalse、FalseならTrueを返します。

print(not False)
print(not True) 
True
False 

真理値Aに対してnot Aは以下のようになります。

否定 真理値表

比較演算子

比較演算子とは『<』や『>』などの、2つの値を比較するための演算子です。

比較演算子の種類と意味

比較演算子の式は、真の場合にTrue、偽の場合にFalseを返します。

Pythonの主な比較演算子は以下の通りです。

比較演算子 説明
a == b aとbは等しい
a != b aとbは等しくない
a < b aはbより小さい
a > b aはbより大きい
a <= b aはb以下である
a >= b aはb以上である
a in b aはbに含まれる
a not in b aはbに含まれない

それぞれ具体例で確認してみましょう。

『==』『!=』

『==』は数学におけるイコールと同じく、左右の値が等しい場合にTrueを返します。

一方『!=』左右の値が等しくない場合にTrueを返します。

print(2 == 2) # True
print(2 == 3) # False
print('Hello' == 'hello') # False

print('Hello' != 'World') # True
print('abc' != 'abc') # False
print(2 < 3) # True
print(3 < 2) # False
print(2 < 3) # True
print(2 <= 3) # True

# 『>』や『>=』は『<』や『<=』の向きを逆にしただけ
print(3 > 2) # True

文字列の比較において大文字と小文字は区別されるという点に気を付けましょう。

『<』『>』『<=』『>=』

『<』『>』『<=』『>=』の4つの演算子の意味は数学における不等号と同じです。

まずは数値の比較を見てみましょう。

print(2 < 3) # True
print(3 < 2) # False
print(2 < 3) # True
print(2 <= 3) # True

# 『>』や『>=』は『<』や『<=』の向きを逆にしただけ
print(3 > 2) # True
True
False
True
True
True

文字列の比較も可能ですが、大小関係が分かりづらい場合があるので注意が必要です。

Pythonにおいて各文字の大小はUnicodeに基づいて定められ、文字列は辞書順で大小が決まります。

またアルファベットでは大文字<小文字となることに注意しましょう。

# 辞書順で大小が決まる
print('a' < 'b') # True
print('abcde' > 'abcdf') # False

# A < Z < a < zの関係
print('A' < 'a') # True
print('python' < 'Python') # False
print('A' < 'b') # True
True
False
True
False
True

『in』『not in』

『in』『not in』は、要素が含まれるかどうかを判定します。

例えばa in bbの中にaが含まれるときにTrueを返します。

『not in』『in』の否定です。

print('bcd' in 'abcde')

# aceはabcdeに連続して含まれていないのでFalse
print('ace' in 'abcde')

print('Hello' not in 'Hello, World!')
True
False
False

論理演算子との組み合わせ

比較演算子は真理値を返すので、比較演算子の式に対して論理演算を行うことができます。

print('abc' < 'bcd' and 3 < 2)
False

上の例では、左の比較の式がTrue、右の比較の式がFalseを返すので、それらに対する論理積はFalseとなります。

他の例も以下に示しておきます。

print(3 <= 2 or 4 < 5) # False or True = True
print(not 2 <= 3)
True
False

6章の練習問題

以下の練習問題を解いてみましょう。

練習問題

問1. 以下の式がTrueとFalseのどちらと等しいかを答えてください。

(1) 5 > 3
(2) True and False
(3) 10 < 20 or ‘abc’ == ‘abcd’
(4) ‘apple’ < ‘banana’
(5) ‘datascience’ < ‘DataScience’

解答

問1(クリックして解答を表示)

(1) True
(2) False
(3) True
(4) True
(5) False



次の記事へ

Python 変数の基本を解説: 初学者のための入門ガイド 前のページへ|次のページへ 7章では、Pythonにおける変数の宣言・代入と代入演算子、および変数名に関する注意点について解説しま...