0
0

【Python入門】真偽判定について

Last updated at Posted at 2024-08-12

Pythonにおける真偽判定について

Pythonには組み込みオブジェクトや組み込み関数と言われている標準ライブラリを利用して
真偽判定を行うことが可能です。
標準ライブラリとは、いわゆるインポート文を定義せずに利用可能なデフォルトで用意されているライブラリを指します。

Python基本構文については【Python入門】基礎構文のまとめでまとめてますので、参考にしてください。

真偽判定についての解説

if文やwhile文等での真偽判定をする際に利用します。
偽と判定するものには以下のものがあります。

オブジェクト Falseと判定されるオブジェクト例
定数 None False
数値型 0 0.0
空文字列または空のコレクション等 '' {} [] set() range(0)
  • '':空の文字列となります
  • {}:空の辞書または重複しない要素を保持するコレクションとなります
  • []:空のコレクションとなります
  • set():重複しない要素を保持するコレクションとなります。{}と同義となります
  • range(0):数列を生成するオブジェクトとなります。0を指定することで空の数列となります

定数での判定

True以外は偽と判定されるため、出力されません。

    for i in [None, False, True]:
        if i: print(i)

数値型での判定

ゼロは偽と判定されるため、0 0.0は出力されません。

    for i in [0, 0.0, 1, -1]:
        if i: print(i)  

空文字列または空のコレクション等での判定

空の文字列、空のコレクションについては、偽と判定されるため、出力されません。

    for i in [ '', {}, [], set(), range(0) ]:
        if i: print(i) 

オブジェクトについて

オブジェクトについてはデフォルト真と判定されますが、クラスにboolメソッド、lenメソッドが定義されている場合、メソッド定義から判定されます。

  • クラスにboolメソッドが定義されている場合、Falseを返却する場合、偽と判定される
  • クラスにlenメソッドが定義されている場合、0を返却する場合、偽と判定される
    boolメソッドが定義されている場合は、boolメソッド定義の判定が優先されます。

サンプルコードを作成しましたので、bool lenメソッドをそれぞれコメント化して実行結果を確認してみてください。

    for i in [ Example(True, 1), Example(True, 0), Example(False, 1), Example(False, 1)]:
        if i: print(i)

class Example:
    def __init__(self, flg: bool, length: int):
        self.flg = flg
        self.length = length

    def __bool__(self) -> bool:
        return self.flg
    
    def __len__(self) -> int:
        return self.length

    def __str__(self) -> str:
        return f"flg:{self.flg}, length:{self.length}"

まとめ

真偽判定について解説しました。
以下については、if文、while文の判定処理では偽と判定されます。

  • None
  • False
  • 0 or 0.00
  • 空の文字列
  • 空のコレクション

判定処理に迷った場合は参考にしてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0