はじめに
Pythonでプログラムを実行する際、「IndentationError: unexpected indent
」というエラーが表示されました。
Pythonはインデント(字下げ)に厳格な言語のため、意図しない空白やタブが原因でこのエラーが発生します。本記事では、このエラーの詳細な原因と解決方法を解説します。
エラーの詳細
発生するエラー例
以下のようなコードを実行するとエラーが発生する場合があります。
def greet():
print("Hello, world!")
print("Welcome to Python!")
実行結果:
File "script.py", line 3
print("Welcome to Python!")
^
IndentationError: unexpected indent
エラーの意味
このエラーは、コードのインデント(空白やタブ)が不適切な位置にあることを示しています。
Pythonはブロックの始まりや終了をインデントで区別するため、ルールに従わないインデントがあるとエラーをスローします。
主な原因:
- タブとスペースが混在している。
- 意図しない場所でインデントが使用されている。
- 同じブロック内でインデントの幅が異なっている。
解決方法
以下の手順を実行することでエラーを解決できます。
1. インデントの統一
Pythonでは、インデントにスペース4つを使用することが推奨されています。
エラーを修正したコード例
def greet():
print("Hello, world!")
print("Welcome to Python!")
上記のコードでは、すべてのインデントをスペース4つに統一しています。
タブとスペースの混在を確認
ターミナルで以下のコマンドを実行すると、コード内にタブ文字が含まれているか確認できます:
grep -P "\t" script.py
もしタブが含まれていれば、タブをスペースに置き換えます。
2. エディタ設定を確認する
使用しているエディタの設定を確認し、自動的にインデントを統一するように設定します。
Visual Studio Codeの場合
- ファイル > 基本設定 > 設定 を開きます。
- 「Editor: Tab Size」を
4
に設定します。 - 「Insert Spaces」を有効にします(タブの代わりにスペースを挿入)。
3. 自動フォーマットツールを使用する
フォーマットツールを使用すると、インデントエラーを効率よく解決できます。
Blackを使用したコード整形
Blackは、Pythonコードを自動的に整形するツールです。
- Blackをインストールします:
pip install black
- コードを整形します:
black script.py
これで、コード全体のインデントが自動的に修正されます。
4. 他のインデントエラーの可能性を確認する
エラーが解消されない場合、別のインデント関連のエラーが含まれている可能性があります。
よくあるインデントエラー
- 空行のインデント: 空行にもインデントがあるとエラーになります。
- ネストされたブロックのインデント不足: ネストの深さに応じた適切なインデントが必要です。
例:
if True:
print("This is incorrect.") # インデントが不足
修正後:
if True:
print("This is correct.")
まとめ
「IndentationError: unexpected indent
」は、Pythonの厳格なインデントルールによって発生するエラーです。以下の手順で解決できます:
- インデントをスペース4つに統一する。
- エディタ設定を確認し、自動整形機能を利用する。
- Blackなどのツールでコードを整形する。
これらを実践することで、インデントエラーを効率よく防ぐことが可能です。