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 |