Remrinのpython攻略日記

python3に入門しました。python3についてあれこれとサンプルコードとか。

エラー

構文解釈時のよくあるエラーについて。
 
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
  構文解釈中にプログラムの最後まで読んでしまった。
  最終行付近で閉じ括弧をわすれていたり。