Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの真理値テストとは?__bool__と__len__による真偽判定の基本を解説

真理値テストの基本

Pythonでは、あらゆるオブジェクトを使って真理値(真偽値)のテストを行うことができます。if文やwhile文の条件にオブジェクトを直接指定するだけで、その真偽をチェックできます。

原則として、クラスに定義された__bool__()メソッドがFalseを返す場合、あるいは__len__()メソッドが0を返す場合を除き、オブジェクトの真理値はTrueとみなされます。

Falseと判定される主なケース

  • 定数がFalseまたはNoneである場合。

  • 変数がゼロを表す値を持つ場合。たとえば 00.0Fraction(0, 1)Decimal(0)0j などはすべてFalseと評価されます。

  • 空のシーケンスやコレクションである場合。空文字列 ''、空リスト []、空タプル ()、空辞書 {}、空セット set()range(0) などの真理値はFalseになります。

また、整数の 0False と等価であり、1True と等価である点も覚えておくと便利です。

サンプルコード

class A: # クラスAには__bool__メソッドがないため、デフォルトでTrueとみなされる
   def __init__(self):
      print('This is class A')
        
a_obj = A()

if a_obj:
   print('It is True')
else:
   print('It is False')
    
class B: # クラスBは__bool__メソッドがFalseを返すよう定義されている
   def __init__(self):
      print('This is class B')
        
   def __bool__(self):
      return False

b_obj = B()
if b_obj:
   print('It is True')
else:
   print('It is False')

myList = [] # 要素が存在しないため、Falseを返す
if myList:
   print('It has some elements')
else:
   print('It has no elements')
    
mySet = (10, 47, 84, 15) # 要素が存在するため、Trueを返す
if mySet:
   print('It has some elements')
else:
   print('It has no elements')

実行結果

This is class A
It is True
This is class B
It is False
It has no elements
It has some elements

  1. Pythonでパターンを出力する方法|三角形・数字・アルファベット・ピラミッドのコード例

    Pythonでパターンを出力するには、ネストされた(入れ子構造の)forループを使用します。外側のループで行数を制御し、内側のループで列数を処理します。そしてprint文を工夫することで、目的に応じたさまざまなパターンを作成できます。パターンには、星(アスタリスク)パターン、数字パターン、アルファベットパターンなどがあり、三角形やピラミッドなど、さまざまな形状にも対応できます。パターン出力の基本これらのパターンは、print文を少し変更しながらforループを組み合わせることで出力できます。基本的な考え方はどのパターンも共通しており、違いはごくわずかです。ここからは、代表的なパターンのコードを実

  2. Pythonの辞書(dict)で特定のキーの値を取得・出力する方法

    Pythonの辞書(dict)は、キーと値のペアを格納するコレクションです。特定のキーに関連付けられた値を取得したい場合は、get()メソッドを使うのが便利です。get()メソッドを使って値を取得するget()メソッドにキーを渡すと、そのキーに対応する値が返されます。>>> D1 = {a: 11, b: 22, c: 33} >>> D1.get(b) 22角括弧([])を使って値を取得するまた、リストと同じように、角括弧の中にキーを指定することでも値を取得できます。>>> D1[c] 33get()メソッドと角括弧の違い両者の大きな違い