どのようなオブジェクトが真(True)や偽(False)と評価されるのか

広告
eyecatch

if 文や for 文などの条件式でオブジェクトが記述された場合に、どのようなオブジェクトが真(True)でどのようなオブジェクトが偽(False)と判定されるのかについて解説します。

真や偽と判定される基準

if 文などの条件式で比較演算子や論理演算子を使った式を記述した場合、結果としてブール値の True または False を返します。(ブール値については「ブール値(True、False)の使い方」を参照されてください)。その結果に従って続くブロック内の文を実行するのかが決まります。

このような条件式を記述するところでオブジェクトをそのものを記述した場合に真( True )と判定されるのか偽( False )と判定されるのかについては次のルールに従います。(以下では真か偽かの判定に組み込み関数の bool 関数を使用しています。 bool 関数については「bool関数の使い方(オブジェクトが真か偽か判定する)」を参照されてください)。

組み込み定数の中でブール値である True は真、 False は偽と判定されます。また None は偽、 NotImplemented は真と判定されます。

>>> bool(True)
True
>>> bool(False)
False
>>> bool(None)
False
>>> bool(NotImplemented)
True
>>>

数値型の値は 0 、 0.0 , 0j は偽、それ以外の値は真と判定されます。

>>> bool(0)
False
>>> bool(5)
True
>>> bool(0.0)
False
>>> bool(0.1)
True
>>> bool(0j)
False
>>>

文字列型は空文字"" は偽、それ以外は真と判定されます。

>>> bool("")
False
>>> bool("Hello")
True
>>>

空のタプル()、空のリスト[]、空のディクショナリ{}は偽、それ以外は真と判定されます。

>>> bool(())
False
>>> bool(("Blue","Red"))
True
>>> bool([])
False
>>> bool(["Apple", "Orange"])
True
>>> bool({})
False
>>> bool({"A":"Apple","O":"Orage"})
True
>>>

主なオブジェクトについて真と判定されるものと偽と判定されるものについて確認しました。

サンプルプログラム

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 sample3-1.py という名前で保存します。

name = ""
if name:
    print("名前は" + name + "です")
else:
    print("名前は未登録です")

print("¥n")

name = "Yamada"
if name:
    print("名前は" + name + "です")
else:
    print("名前は未登録です")

真や偽と判定される基準(1)

その後で、次のように実行してください。

python sample3-1.py

真や偽と判定される基準(2)

変数 name に最初は空文字を代入し、次に空文字ではない文字列を代入して if 文の条件式でそれぞれ評価しました。空文字は偽、空文字ではない文字列は真と判定されました。

-- --

条件式でオブジェクトが記述された場合に、どのようなオブジェクトが真(True)でどのようなオブジェクトが偽(False)と判定されるのかについて解説しました。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。