Python: 「if 0:」はTrueなのかFalseなのか
Pythonのif文で条件式の部分を数値の「0」として「if 0:」と記述した場合、 TrueになるのかFalseになるのかは、 結論から言うと「False」です。
if 0: print(True) else: print(False)
実行結果
False
多くの場合、条件式の結果は真偽値(True/False)になりますが、 上のコードのように 真偽値にならない数値や文字列もTrue、Falseで判定することができます。
Pythonでは真偽値にならない数値や文字列に関してTrue、False 判定をする場合、 「数値の0」と「文字列の空の値」は False と判定され、 それ以外は True と判定されます。 表にすると次の通りです。
データ型 | True | False |
---|---|---|
数値 | 0以外 | 0 |
文字列 | 空の値以外 | 空の値(None) |
条件判断時に「数値の0と空の値は False として判定される」 ことを認識しておいてください。
次のコードで変数「a」に具体的な値をいろいろ代入して、 どのように判定されるのかを試した結果が下の表です。 最低限押さえておきたいのは、0、None、''、""、[]空のリスト、{}空の辞書、()空のタプルが Falseになることです。
a = 0 if a: print(True) else: print(False)
「a」の値 | True / False |
---|---|
0 | False |
0.0 | False |
1 | True |
None | Flase |
""(空の文字列) | False |
''(空の文字列) | False |
" "(スペース) | True |
"hoge" | True |
"0" | True |
"\n" | True |
"\t" | True |
[](空のリスト) | False |
{}(空の辞書) | False |
()(空のタプル) | False |