まず結論
Pythonのエラーは、最後の行から見ます。
NameError: name 'namu' is not defined
この例なら、NameError がエラー名です。
エラー名を見ると、何を確認すればよいか分かりやすくなります。
こんなときに読む記事です
次のようなときに使います。
- エラー文が長くて怖い
- どこから読めばいいか分からない
- よく見るエラー名だけ先に知りたい
ここでは、代表的なエラーだけを短く見分けます。
絵で見るなら
モコが長いエラーの紙を下から見て、最後の赤いラベルだけ先に読むイメージです。
全部を一度に読まず、まずエラー名を見ます。
SyntaxError
SyntaxError は、Pythonが文の形を読めないときに出ます。
よくある原因は、コロン、カッコ、クォートの忘れです。
if score >= 60
print("合格")
この例では、if の行の最後に : がありません。
NameError
NameError は、Pythonがその名前を知らないときに出ます。
name = "モコ"
print(namu)
name と作ったのに、namu と書いています。
変数名のつづり、大文字小文字を確認します。
IndentationError
IndentationError は、字下げがずれているときに出ます。
if score >= 60:
print("合格")
if の中身なのに、print() が字下げされていません。
Pythonでは字下げがコードのまとまりを表します。
ValueError
ValueError は、値の形が合わないときに出ます。
age = int("12歳")
int() は整数にできる文字列を期待します。
12歳 は単位が混ざっているので、整数として読めません。
迷ったら最後の行を見る
エラー文が長いときも、まず最後の行を見ます。
ValueError: invalid literal for int() with base 10: '12歳'
次に、行番号と、その近くのコードを確認します。
全部を一度に理解しようとしなくて大丈夫です。
手を動かすミニ練習
次のコードを写して、わざとエラーを見てみましょう。
name = "モコ"
print(namu)
最後の行に NameError と出ることを確認します。
3行まとめ
- 最初はTracebackの最後の行を見る。
- エラー名を見ると、確認する場所をしぼれる。
- SyntaxError、NameError、IndentationError、ValueErrorはよく出る。