IndentationError: expected an indented block Python

IndentationError: expected an indented blockというエラーメッセージが出たときの解決方法を紹介します。

そもそもの意味

翻訳機能を用いると「インデントのエラー: インデントされたブロックが必要です」となります。

インデント、ブロックという単語を理解していれば、直ぐに原因が分かります。

インデント及びブロックとは

プログラミングでよく条件分岐処理(if文)や繰り返し処理(for文)を用いる際、{}を見たことがあるでしょうか。

例:

if( 条件 ){
    処理
}
for( 条件 ){
    処理
}

条件分岐処理、繰り返し処理をする際、どこからどこまでの範囲を実行するのかをPCに教えるためにあるのですが、

その範囲をブロックと呼び、{}で囲みます。

Pythonでは、そのブロックをインデントで指定します。

インデントとは、字下げと言って、スペースやタブで前の文をずらすことに相当します。

例:

if( 条件 ):
    処理
for( 条件 ):
    処理

原因

ということでIndentation:Errorとは、インデントが出来ていないことが考えられます。

大体のエディタは、: を入力して、Enterを押すと自動でインデントしてくれます。

自動でインデントするエディターは、emacs、VScode

自動でインデントしないエディターは、vi(vim)

私調べではこういう結果でした。しかし、設定をいじれば、vimをいけると思います。(未確認)

また、インデントの文字数ですが、4文字が普通のようです。

また、Tabキーでインデントすると、環境(タブストップの有無)によって、空白文字が変わったり正常に動かない場合があるそうです。

個人しかプログラムを使わないのであれば、Tabキーで問題ないでしょう。Tabキー1回でインデントできるので楽です。

ですが、一般的にインデントするときは、スペースキー4文字が無難なようです。