Python ブール型以外でTrueやFalseと判定される値
はじめに
Pythonでは、ブール型以外にもTrueやFalseと判定される値があります。ここではそれらの値と判定値を整理します。
TrueやFalseと判定される値
ブール型以外でTrueやFalseと判定される値は以下の通りです。
値 | 判定値 |
---|---|
0 | False |
0.0 | False |
''(空文字列) | False |
上記以外 | True |
実行例
Falseとなる例
以下はFalseとなる例です。if文の評価結果がFalseとなっていることがわかると思います。
- 例1
if 0: print('True') else: print('False')
False
- 例2
if 0.0: print('True') else: print('False')
False
- 例3
if '': print('True') else: print('False')
False
Trueとなる例
以下はTrueとなる例です。ここでは1例のみ紹介しますが、Falseとなる例で説明した内容以外であれば、すべてTrueとなります。
- 例
if 1: print('True') else: print('False')
True
TrueやFalse判定を利用したコードの簡易化
TrueやFalseと判定される値を利用するとコードを簡易化できます。
例えば、空文字が入力されている間whileループを繰り返す処理を考えます。
input()
で入力した文字が空文字かどうか判定する場合、TrueやFalse判定を利用するとコードを簡易化できます。
- TrueやFalse判定を利用しない場合の例
name = '' while name == '': # not name != ''でも同様 print('名前を入力してください') name = input() print('こんにちは' + name + 'さん')
- TrueやFalse判定を利用した場合の例
name = '' while not name: # 空文字が入力された場合にFalse判定されることを利用して簡易化 print('名前を入力してください') name = input() print('こんにちは' + name + 'さん')
TrueやFalse判定で不具合を生まないために
間違えやすいのがマイナスの値です。0や0.0はFalseと判定されますが、マイナスの値はTrueと判定されます。
例えば年齢を入力してもらう処理を考えます。ここでTrue、False判定を誤解していると、不具合を埋め込んでしまう可能性があります。
年齢は0以上の値なので、条件式は age >= 0
となります。しかし以下のTrue、False判定を誤解した間違った例ではage != 0
という条件式になっています。
- 間違った例
print('年齢を入力してください') age = int(input()) if age: # この条件式は age != 0と同等 print(str(age) + '歳ですね') else: print('0以上の値を入力してください')
- 正しい例
print('年齢を入力してください') age = int(input()) if age >= 0: print(str(age) + '歳ですね') else: print('0以上の値を入力してください')