まず結論

NameError は、Pythonがその名前を知らないときに出ます。

print(name)

この前に name を作っていなければ、エラーになります。

こんなときに読む記事です

次のようなエラーで止まった人向けです。

NameError: name 'name' is not defined

意味は「name という名前は定義されていません」です。

先に変数を作る

変数は、使う前に代入しておく必要があります。

name = "モコ"
print(name)

このように、先に name に値を入れておけば動きます。

つづり違いに注意

よくあるのが、変数名のつづり違いです。

message = "こんにちは"
print(mesage)

messagemesage は別の名前です。
Pythonはかなり正直に名前を見ています。

大文字小文字も別

Pythonでは、大文字と小文字も区別されます。

Name = "モコ"
print(name)

Namename は別の名前です。

関数名でも起きる

関数を定義する前に呼んだり、名前を間違えたりしても起きます。

say_helo()

say_hello と書きたかったのに、つづりが違うかもしれません。

読み方のコツ

NameError が出たら、「Pythonが知らない名前を使った」と考えます。
その名前が前の行で作られているか、つづりや大文字小文字が合っているか確認しましょう。