Python IndentationError: Unindent が外側のインデント レベルと一致しません
- Python のインデント規則
-
Python での
IndentationError
の原因 -
Python の
IndentationError: unindent does not match any outside indentation level
を修正する
この記事では、コードの実行中に発生する 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
を選択する必要があります。
外側のインデント レベルに合わせる
以下の例のコードでは、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
を修正する方法を理解するのに役立つことを願っています。
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
- AttributeError の解決: 'list' オブジェクト属性 'append' は読み取り専用です
- AttributeError の解決: Python で 'Nonetype' オブジェクトに属性 'Group' がありません
- AttributeError: 'generator' オブジェクトに Python の 'next' 属性がありません
- AttributeError: 'numpy.ndarray' オブジェクトに Python の 'Append' 属性がありません
- AttributeError: Int オブジェクトに属性がありません
- AttributeError: Python で 'Dict' オブジェクトに属性 'Append' がありません