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文字が無難なようです。