【Python】インデントに関するエラーの原因と解消法(IndentationError, TabError)

Python

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では、インデントはスペースで行うことが推奨されています。

まとめ

本記事では、インデントに関するエラーの原因と解消方法について紹介しました。このようなエラーについては慣れも必要と思いますので、どんどんプログラムを書いて、何度もエラーに遭遇して慣れていきましょう!

タイトルとURLをコピーしました