IndentationError: unindent does not match any outer indentation level

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

はじめに

Pythonでソースを書いている時にエラーが。
発生したエラーは一通りコーディングが終わり、ソースコードの修正を行っていた時に発生したものでした。
今回はその時のエラーメッセージの原因とその対処方法、エラーが発生するソースコードの例についてです。

エラーメッセージと原因

エラーメッセージ

まず発生したメッセージですが

IndentationError: unindent does not match any outer indentation level

というものでした。

エラーは
インデントエラー:字下げのレベルが外側の字下げのレベルと一致しません」
という意味ですね。

インデント(字下げ)も文法に含むPythonならではのエラーです。

原因

このエラーはPythonのインデント(スペースによる字下げ)が一貫性を保っていない場合に発生します。
Pythonは例えばIf文を見るとわかりますが、書きたい処理をIf文中にインデントして書きます。

If(True):
    # ここに何か処理を追加

これはPythonでは文法として、インデントがコードブロックの境界を示すためで、適切なインデントを行う必要があります。

サンプルプログラム

次は実際エラーが発生する簡単なプログラムです。

def my_function():
    x = 10
    if x > 5:
        print("x is greater than 5")
     else:  # この行のインデントが前の行と不一致
        print("x is not greater than 5")

これを実行するとエラーが発生します。
コメントにあるように5行目が3行目Ifのところとインデントが一致しないからです。

次はエラーメッセージが発生しないサンプルプログラムです。

def my_function():
    x = 10
    if x > 5:
        print("x is greater than 5")
    else:  # この行のインデントを前の行と一致させる
        print("x is not greater than 5")

5行目と3行目のインデントを合わせることでPythonが同じレベルのインデントということを理解します。

さいごに

ということで今回はpythonのインデントが不一致によって発生するエラーでした。
エディタによってはパッと見分かりづらいものがあるのでこのエラーはよく発生するのではないかと思います。

別のエディタから貼り付けを行ったりするとスペースの数やタブの設定が違うことがあるのでこのエラーが発生しやすいです。
割りと起きやすいエラーの割に気づきにくいので注意が必要ですね。

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

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