IndentationError: expected an indented block

Python
本ページはプロモーションが含まれています

はじめに

今回はPython独特の文法に関するエラーです。Pythonはコードの可読性や見やすさを重視しています。
そのためインデント(スペースやタブ)を使います。今回はそのインデントで起きるエラー「IndentationError: expected an indented block」についてです。

エラーの原因と対処方法、サンプルコードも載せているので参考にしてください。

エラーの原因と対処法

エラー

まず発生するエラーは

IndentationError: expected an indented block

というものです。
日本語で訳すと
インデントエラー:インデント(字下げ)されたブロックが期待されます
となります。

原因とサンプルソース

原因

このエラーは、冒頭でも書きましたがPythonがインデント(スペースやタブによる字下げ)を使用してコードブロックを認識する言語であるために起きます。
通常は制御フロー文(例:if文、for文、while文、関数定義など)の後の行が適切にインデントされていないときに発生します。

次にエラーが発生する例とそれを修正したソースコードの例を見てみます。

エラーが発生するソースコード

エラーが発生するのは次のようなインデントが出来ていないケースです。

if True:
print("Hello, world!")

これを実行すると

    print("Hello, world!")
    ^
IndentationError: expected an indented block

と2行目でエラーになります。

修正したソースコード

次は修正したコードです。
IfやForなどの中に入るコードはインデント(字下げ)が必要です

if True:
    print("Hello, world!")

これを実行すると

Hello, world!

となります。

Tips

このようなエラーが発生しやすいのは、新たに制御フロー文を書いたり、既存のコードを編集したりしたときです。特にタブとスペースを混在させてインデントすると、見た目では区別がつかないために問題が生じやすいです。
そのため、Pythonの公式スタイルガイドであるPEP 8では、インデントにはスペース4つを推奨しています。

PythonのIDEやエディタの多くは、自動的に適切なインデントを挿入する機能や、タブとスペースの混在を警告する機能があります。これらを活用すると、このようなエラーを避けられます。

さいごに

今回はpythonのインデントによるエラーについてです。
Tipsで書きましたが、途中でエディタを変えて編集するとスペースとタブが混在したりすることがあるので注意です。

参考でソースをコピーして使ったりマージする際に別のコードを持ってくる時などは注意したほうがいいですね。

この記事がお役に立ったのなら嬉しいです。
最後までお読みいただきありがとうございます。

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