Pythonでプログラムを書いていると、以下のようなエラーメッセージに遭遇することがあります。
- IndentationError: unexpected indent
- IndentationError: expected an indented block after ~
- TabError: inconsistent use of tabs and spaces in indentation
本記事では、上記エラーの原因と解消方法について紹介します。
エラー原因
このエラーは、Pythonのコード内でインデントが適切に設定されていない場合に発生します。Pythonでは、インデントはコードブロックを定義するために重要な役割を果たします。適切なインデントが行われていないと、Pythonインタプリタはコードの構造を正しく認識できず、エラーが発生します。
エラー原因1 ”:” のあとにインデントが無い
関数名やif文などの行末には “:” があります。この次の行にはインデントが必要ですが、下記のコードはインデントがされておらずエラーが発生します。
for i in range(5):
result = i * i # この行はインデントが必要
エラー解消方法
“:”のあとは、インデントを行うようにします。
エラー原因2 同じブロック内でスペースの数が異なる
同じブロック内では、インデントを統一する必要があります。しかし、下記のコードは、同じブロック内なのにスペースの数が異なっているため、エラーが発生します。
def sample():
print("aaa")
print("bbb") # この行はインデントがずれている
エラー解消方法
同じブロック内では、同じスペースの数となるように修正します。
エラー原因3 同じブロック内でスペースとタブが混在している
見た目では分かり辛いのですが、下図の2行目と3行目は、Pythonインタプリタから見るとインデントが異なります。
実は、上図の2行目はスペース4個で、3行目はタブ文字を使用しています。
このような間違いを見分けるためには、タブ文字を表示できるテキストエディタを使うことが重要です。
エラー解消方法
インデントをスペースに統一しましょう。Pythonでは、インデントはスペースで行うことが推奨されています。
まとめ
本記事では、インデントに関するエラーの原因と解消方法について紹介しました。このようなエラーについては慣れも必要と思いますので、どんどんプログラムを書いて、何度もエラーに遭遇して慣れていきましょう!