エラー
構文解釈時のよくあるエラーについて。
AttributeError:
・'~' object has no attribute '~'
属性名、メソッド名などが間違っている。存在しないのに呼び出した。
lとrや大文字小文字などスペルミスを見直す。
ドットを打ち込んで属性の候補一覧からTAB補完で選ぶとミスが減る。
属性の候補一覧に載っていない場合は変数などの型がミスっているかも。
NameError 変数名などが間違っている。
・name '~' is not defined
代入(assign)前の変数を利用しようとした。
変数をdelしてしまった。
変数名のタイプミスなど。
IndentationError:
・expected an indented block
必要な部分にインデントされていない。
def, if, for, while, classなどの次の行。
・unexpected indent
インデントしてはいけない部分でインデントしてしまった。
IndexError インデックスミス
・list index out of range
インデックスの範囲外を指定してしまった。
print(len(list1))などで要素数を確認する。
最初の要素は[1]ではなく[0]
TypeError 型が合ってない
・'list' object is not callable
リストオブジェクトを関数として扱ってしまっている。
・list1[0]とするのをlist1(0)としている。
・何らかの関数をリストで上書きしてしまっている。
list=[1, 2, 3]などと、組み込みの関数名を変数名にするとミスが多い。
・'int' object is not callable
intオブジェクトを関数として扱ってしまった。
数学の式で(x + y)(x - y)はpythonでは(x + y)*(x - y)
SyntaxError
・invalid character in identifier
全角スペース、タブなどが混入。webのコピペでよくある。
・invalid syntax
その他のエラー。
エラーよりも前の行で()の対応が合っていない。とくにclosing parenthesis「)」
・EOL while scanning string literal
文字列のクオーテーションが閉じられていない。
・Missing parentheses in call to 'print'
print文は()を付ける。
・unexpected EOF while parsing
構文解釈中にプログラムの最後まで読んでしまった。
最終行付近で閉じ括弧をわすれていたり。