Python IndentationError: Unindent が外側のインデント レベルと一致しません

Abid Ullah 2023年6月21日
  1. Python のインデント規則
  2. Python での IndentationError の原因
  3. Python の IndentationError: unindent does not match any outside indentation level を修正する
Python IndentationError: Unindent が外側のインデント レベルと一致しません

この記事では、コードの実行中に発生する IndentationError を解決する方法を学びます。 このエラーの原因となるさまざまな理由を見ていきます。

また、Python でこのエラーを解決する方法も見つけます。 Python での IndentationError とは何かから始めましょう。

Python のインデント規則

インデントは、Python 言語の重要な部分です。 コード内でコード ブロックを定義するには、インデントに依存します。

インデントは、スペースとタブの両方を使用して行うことができます。 インデントがあるため、開発者はコードの流れを簡単に見つけることができます。

特定のメソッド/条件の開始点と終了点を簡単に見つけることができます。

Python での IndentationError の原因

スペースとタブの両方の使用

Python コードのインデントにスペースとタブの両方を使用すると、IDE は IndentationError をスローします。 これは通常、これらのエラーの場合ですが、コードの一部でインデントを使用しなかった場合にも発生する可能性があります。

前述したように、コードをインデントするには、タブまたはスペースの 2つの方法があります。 Python では、すべてのインデント レベルの標準は 4つのスペースまたは 1つのタブです。

このインデント方法は Python の原則ですが、このインデントによってコード構造を追跡できる Python 開発者にとって視覚的な補助手段でもあります。

コード例:

def exploring_indentation():
    number = 9
    if number == 9:
        print("Indentation works like this!")


exploring_indentation()

コードの出力:

Indentation works like this!

コード内の余分なインデントによるインデント エラー

IndentationError のもう 1つの理由は、以下のコード例のように余分なインデントが追加されている可能性があります。

コード例:

def exploring_indentation():
    number = 9
    if number == 9:
        print("Indentation works like this!")
   else:
        print("this is an example of an unnecessary indent")
exploring_indentation()

コードの出力:

  File "<tokenize>", line 5
    else:
    ^
IndentationError: unindent does not match any outer indentation level

インデントが間違っているため、コードの else 部分は if 条件内にあります。

Python の IndentationError: unindent does not match any outside indentation level を修正する

スペースとタブの一貫した使用

インデントを追跡するのは面倒に思えますが、PyCharm や VS Code などのコード エディターには、インデントを追跡するのに役立つ機能が組み込まれています。

コードを書いているときに Enter を押して次の行に移動すると、エディターは次のコード行を自動的にインデントします。

さらに、コード内でタブとスペースを混在させる場合、タブをスペースに、またはその逆に変換するオプションをいつでも見つけることができます。

たとえば、PyCharm では、左上隅の Edit に移動し、Convert Indents オプションを選択し、必要に応じて To Tabs または To Spaces を選択する必要があります。

Pycharmの設定を編集してインデントエラーを修正

外側のインデント レベルに合わせる

以下の例のコードでは、if および elif ステートメントはインデントなしで割り当てられています。 同時に、else ステートメントには追加のインデントが割り当てられます。

外側のレベルに余分なインデントがあるため、Python コンパイラは else ステートメントを認識できず、IndentationError を返します (unindent はどの外側のインデント レベルとも一致しません)。

コード例:

a = int(input("Enter an integer A: "))
b = int(input("Enter an integer B: "))
if b > a:
        print("B is greater than A")
elif a == b:
        print("A and B are equal")
    else:
        print("A is greater than B")

コードの出力:

File "<string>", line 7
    else:
        ^
IndentationError: unindent does not match any outer indentation level

正しいコード例:

a = int(input("Enter an integer A: "))
b = int(input("Enter an integer B: "))
if b > a:
    print("B is greater than A")
elif a == b:
    print("A and B are equal")
else:
    print("A is greater than B")

これらの問題は、インデントなどの小さな間違いを気にせずにプログラミング エクスペリエンスを強化するために特別に作成されているため、Python 固有のエディターで簡単に修正できます。

ただし、IDE のようなメモ帳を使用する場合は、コードを実行するまでこれらのエラーを指摘しないため、タブとスペースに注意し、インデントを非常に細かく追跡する必要がある場合があります。

この記事が、Python で IndentationError を修正する方法を理解するのに役立つことを願っています。

著者: Abid Ullah
Abid Ullah avatar Abid Ullah avatar

My name is Abid Ullah, and I am a software engineer. I love writing articles on programming, and my favorite topics are Python, PHP, JavaScript, and Linux. I tend to provide solutions to people in programming problems through my articles. I believe that I can bring a lot to you with my skills, experience, and qualification in technical writing.

LinkedIn

関連記事 - Python Error