初級のPythonエラー 42問
14種類のエラーを、それぞれ複数パターンずつ収録しています。
- IndentationError: expected an indented block の原因と直し方if・for・def・whileの本体を書き忘れたときに出る、Python学習者が最初につまずくエラーです。波括弧の代わりにインデントでブロックを表すPythonならではの挙動を整理します。
- SyntaxError: expected ':' の原因と直し方if・for・def・whileなど、ブロックを始める文の末尾にコロンを付け忘れたときに出るエラーです。他言語の波括弧に慣れていると忘れやすいポイントです。
- TabError: inconsistent use of tabs and spaces の原因と直し方同じブロックの中でタブとスペースを混在させたときに出るエラーです。エディタ上では同じ見た目になるため、コードを読むだけでは原因に気づけません。
- NameError: name 'x' is not defined の原因と直し方定義していない変数を参照したときに出る、最も頻出のエラーの一つです。タイプミス・宣言忘れ・似た名前との混同のパターンを整理します。
- SyntaxError: Missing parentheses in call to 'print' の原因と直し方Python 2の書き方(print文)をPython 3で使うと出るエラーです。printが「文」から「関数」に変わったことが原因です。
- SyntaxError: unterminated string literal の原因と直し方文字列を開いたクォートと同じ種類で閉じ忘れたときに出るエラーです。シングルクォートとダブルクォートを混在させたときにも起きます。
- SyntaxError: '(' was never closed の原因と直し方丸括弧・角括弧・波括弧の対応が崩れたときに出るエラーです。複数行にまたがる呼び出しや、関数呼び出しの中に別の括弧が入れ子になっている場合に見落としがちです。
- ZeroDivisionError: division by zero の原因と直し方0による除算・剰余算で発生する例外です。/ と // と % のいずれでも、分母や除数が0だと例外になります。
- TypeError: can only concatenate str (not "int") to str の原因と直し方文字列と数値を + で連結しようとしたときに出るエラーです。Pythonの + は両辺の型が揃っていないと使えません。
- TypeError: '>' not supported between instances の原因と直し方文字列と数値、あるいはNoneと数値など、比較できない型同士を比較しようとしたときに出るエラーです。
- SyntaxError: invalid syntax(if x = 5:)の原因と直し方条件式の中で = (代入)を使おうとしたときに出るエラーです。比較には == を使います。
- NameError: Did you mean 'True'? の原因と直し方True・False・Noneの大文字小文字を間違えたときに出るエラーです。変数名の大文字小文字の食い違いでも同じ形のエラーになります。
- IndexError: list index out of range の原因と直し方リストの範囲外の添字にアクセスしたときに出るエラーです。添字が0始まりであることの直接の帰結です。
- AttributeError: object has no attribute 'length' の原因と直し方他言語の.lengthや.size()の感覚でPythonのコレクションを扱おうとしたときに出るエラーです。Pythonでは長さの取得はlen()という組み込み関数に統一されています。