NameError: Did you mean 'True'? の原因と直し方
True・False・Noneの大文字小文字を間違えたときに出るエラーです。変数名の大文字小文字の食い違いでも同じ形のエラーになります。
エラーメッセージの読み方
Traceback (most recent call last):
main.py- ファイル名
1- 行番号 — 実際にクラッシュした行
<module>- 発生場所 — <module> ならトップレベル、関数名ならその関数の中
NameError- 例外クラス — 何が起きたか。ここを検索するのが最短です
name 'true' is not defined. Did you mean: 'True'?- 詳細メッセージ — どの値が問題だったか
このエラーが出る典型パターン
パターン1
1 flag = true ^
Traceback (most recent call last):
File "main.py", line 1, in <module>
flag = true
^^^^
NameError: name 'true' is not defined. Did you mean: 'True'?
Pythonの真偽値はTrue/Falseで、先頭が大文字です。他言語のtrue/falseの癖のまま書くとNameErrorになります。
直し方: true を True にします。
広告
広告スロット(未設定)
パターン2
1 x = none ^
Traceback (most recent call last):
File "main.py", line 1, in <module>
x = none
^^^^
NameError: name 'none' is not defined. Did you mean: 'None'?
PythonにはnullやNULLはなく、Noneという名前の唯一のオブジェクトです。大文字小文字を含めて正確に書く必要があります。
直し方: none を None にします。
パターン3
1 Total = 100 2 print(total ) ^
Traceback (most recent call last):
File "main.py", line 2, in <module>
print(total)
^^^^^
NameError: name 'total' is not defined. Did you mean: 'Total'?
Pythonの変数名は大文字小文字を区別します。定義したときと違う大文字小文字で参照すると別の名前として扱われます。
直し方: total を Total にします。
よくある誤解
他の言語のtrue/false/nullの綴りのままPythonを書くと、これらは「定義されていない変数」として扱われます。予約語ではなく組み込み定数の大文字小文字の話だと気づきにくいポイントです。
まとめ
NameError: Did you mean 'True'?は初級でつまずきやすい項目です。上の3パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。