Pythonのインデントエラー:原因、解決方法、利点

公開: 2021-05-26

解釈された高水準で汎用のプログラミング言語として、Pythonはプログラミングの世界で最も有望で、最先端の、そして新しいプラットフォームとしてますます称賛を集めています。 Pythonは、その独創的な設計哲学なしには何もありません。

重要な特徴は、コードの可読性を高めるために重要なインデントを使用することに重点が置かれていることです。 以下に強調表示されている図は、Pythonの設計哲学の防波堤を20の格言として簡単に概説しています。これは、Pythonの最も多作で粘り強いコア開発者の1人となった長期のPythoneerであるTimPetersによってほのめかされています。

目次

Pythonの簡単な紹介

Pythonのインデントエラーの根底にある特定の技術を掘り下げる前に、Pythonの基本とインデントの必要性を理解する必要があります。 そうすることで、エラー自体をよりよく理解できるようになるだけでなく、プログラマーがエラーを効果的に解決することを選択することで得られる利点についての洞察を得ることができます。

マルチパラダイムプログラミング言語としてのPythonの始まりは、1991年にさかのぼることができます。それ以来、プログラマーは、データサイエンス、Webおよびモバイル開発など、ユーザー固有のさまざまなニーズに合わせてPythonのコアワイヤーフレームを継続的に適応させてきました。

今、私たちは皆、判読できない手書きを理解しようとすることは、骨の折れるトリッキーで、しばしば腹立たしいことを知っています。 同様に、読み取り不可能で構造化されていないコードは、プログラミングの世界では単純で単純であり、受け入れられません。 ここで、PEPまたはPython拡張提案の概念がプログラマーの助けになります。 PythonコミュニティへのPEPは、一般大衆向けの共有Googleドキュメントに似ています。

これは継続的に更新される記述的義務であり、Pythonプログラミングコミュニティに機能と更新を包括的に通知して、コードの可読性を向上させます。 2001年にGuidovanRossum、Barry Warsaw、Nick Coghlanによって、PEP8はPythonのスタイルコードと呼ばれています。

インデントとは何ですか?

Pythonは手続き型言語であることが主に知られているため、Pythonのインデントは、単一のコードを機能的に類似したステートメントの識別可能なグループに分離するために使用されます。 C、C ++、JAVAを含むプログラミング言語の大部分は、中括弧「{}」を使用してコードブロックを定義します。 Pythonはこの設計からの逸脱を示し、インデントの使用を好みます。

インデントの構文

PEP 8の空白の倫理で概説されている規則によれば、すべての新しい反復(つまり、コードのブロック)はインデントで始まり、コードの終わりはインデントされていない最初の行である必要があります。 インデントを実行する一般的な方法は、4つの空白または1つのタブ文字であり、タブよりも領域が主に優先されます。

前に説明したように、行の先頭にある先頭の空白は、行のインデントレベルを決定します。 特定のコードブロックのステートメントをグループ化するには、インデントレベルを上げる必要があります。 同様に、グループ化を閉じるには、インデントレベルを下げる必要があります。

チェックアウト: 42エキサイティングなPythonプロジェクトのトピックとアイデア

Pythonでのインデントエラーの原因

「インデントエラー:インデントされたブロックが必要です」は、ユーザーを区別しません。 Pythonプログラミングの初心者であろうと、経験豊富なソフトウェア開発者であろうと、これはある時点で必ず発生します。 Pythonでは、入力するすべてのコードが正しい空白で配置されているため、コード内のいずれかのインスタンスでインデントが正しくなく、コード全体が実行されず、インタープリターはエラー関数を返します。 何に注意すべきかを正確に知るために、Pythonでのインデントエラーの一般的な原因のいくつかを以下に示します。

1.コーディング中のタブとスペースの同時使用。 理論的には、タブとスペースの両方が同じ目的を果たしていると主張することができますが、これを通訳の観点から考えてみましょう。 空白とタブが一貫性のない互換性のある方法で使用されていると、あいまいさが生じます。 これにより、インタプリタはどの変更を使用するか混乱し、最終的にPythonでインデントエラーが返されます。

2.意図せずにインデントを間違った場所に配置したか、コード行の間にタブや空白がありません。 Pythonは、記述されたコードを配置するための厳格なガイドラインに準拠しているため、間違った場所にインデントすると、必然的にエラーが返されます。 たとえば、Pythonの最初の行はインデントしないでください。

3.時折、期限切れの非常に長いプログラムを終了しているときに、for、while、ifなどの複合ステートメント関数のインデントを無意識のうちに見逃してしまうことがあります。 これもインデントエラーにつながります。 これは、Pythonを使用する場合のインデントの最も基本的な必要性であり、習得するには厳密に練習する必要があります。

4.ユーザー定義関数または別のクラスを操作するときにインデントを使用するのを忘れた場合、エラーがポップアップする可能性があります。

Pythonでインデントエラーを解決するにはどうすればよいですか?

1.間違った空白またはタブがないか確認します。 残念ながら、インデントエラーをすばやく修正することはできません。 コードはあなたのものであるため、エラーのあるインスタンスを個別に識別するために各行を評価する必要があるという事実は変わりません。 ただし、コードの行はブロックに配置されているため、プロセスは比較的簡単です。 たとえば、特定のシーケンスで「if」ステートメントを使用した場合、次の行をインデントすることを覚えているかどうかをクロスチェックできます。

2.新しいブロックが途中で導入された場合でも、特定のブロックのインデントがコード全体で同じであることを確認してください。 インデントに矛盾がないか確認してください。

上記の手動による解決策がうまくいかず、インデントを見逃した場所を特定するのに苦労している場合は、次の手順に従ってください。

3.コードエディタの設定に移動し、タブと空白を表示しようとするオプションを有効にします。 この機能を有効にすると、単一の小さなドットが表示されます。各ドットはタブ/空白を表します。 あるべきではない場所にドロップがないことに気付いた場合は、その行にインデントエラーがある可能性があります。

4.Pythonインタープリターに組み込まれているインデントガイドを使用します。 間違いなく、この方法はいくつかのコード行に対して非常に非効率的です。 ただし、各行を案内し、エラーがどこにあるかを正確に示すため、すべてのエラーを見つけて修正する最も確実な方法です。

また読む:実世界の魅力的なPythonアプリケーショントップ12

インデントの利点

読みやすさと一貫性は、優れたコードにとって不可欠です。 したがって、PEP 8の空白に続いて、倫理は交渉の余地がないはずです。 それはあなたのコードを論理的に実証し、それによってより快適なコーディング体験に貢献します。 さらに、読みやすさが事実上のこのスタイルのガイドラインに従うと、あなたには知られていないがあなたの仕事に興味を持っている人々はあなたのコードを簡単に理解するでしょう。

インデントのデメリット

  • コードが大きく、インデントが破損している場合、インデントエラーを修正するのは面倒な場合があります。 これは通常、コードがオンラインソース、Wordドキュメント、またはPDFファイルからコピーしている場合です。
  • 一般的なプログラミング言語では、通常、インデントに中括弧を使用します。 Pythonを使い始めたばかりのプログラマーにとって、インデントに空白を使用するという考えに適応するのは難しい場合があります。

まとめ

あなたとよく書かれたコードの間にあるのはインデントだけであり、あなたとあなたのよく書かれたコードとそのシームレスな実行の間にあるのはインデントエラーです。 今、すべての人間は間違いを犯します。 すべてのプログラマーは人間です。 したがって、すべてのプログラマーは間違いを犯します。 ただし、インデントエラーは簡単に解決できます。 あなたがする必要があるのは呼吸してあなたのスペースを取ることだけです。

これらのPythonプロジェクトに取り組んでいる間、あなたが多くを学ぶことを願っています。 ペースの速い技術の進歩の前にデータサイエンスを学ぶことに興味がある場合は、upGrad&IIIT-BのデータサイエンスのエグゼクティブPGプログラムをチェックして、将来に向けてスキルを磨いてください。

Pythonのインデントが原因でどのようなエラーが発生する可能性がありますか?

Pythonは、行の先頭のスペースを調べて、コードブロックの開始と停止を決定します。 次のインデントエラーが発生する可能性があります。
1.予期しないインデント-このコード行の先頭には、前の行よりも多くのスペースがありますが、前の行ではサブブロックが開始されません。 ブロック内では、コードのすべての行が同じ空白文字列で始まる必要があります。
2. Unindentは、どの外側のインデントレベルにも対応していません-このコード行の先頭には、前の行よりも少ないスペースが含まれていますが、他のブロックとも一致しません。
3.インデントされたブロックが予期されていました-このコード行は前の行と同じ数のスペースで始まりますが、前の行はブロックを開始することになっています(たとえば、if / while / forステートメント、関数定義)。

インデントスパイダーの一貫性のないタブとスペースをどのように修正しますか?

タブとスペースは、画面上に空白として表示される2つの別個の文字です。 問題は、タブ文字の大きさについてコンセンサスがないことです。したがって、一部の編集者は、タブ文字を8スペース、4スペース、2スペースとして表示し、カスタマイズも可能です。
コーディングしても、一方の行がタブでインデントされ、もう一方の行がスペースでインデントされると、エディターでは適切に見えるにもかかわらず、Pythonはエラーをスローします(ただし、タブの幅を2倍にすると見栄えが悪くなります。タブラインは2レベルインデントされます)。
この問題を回避するには、テキストエディタのオプションに移動し、タブをスペースに変換する機能を有効にします。これにより、タブ文字がn個のスペース文字に置き換えられます。nはエディタが使用するタブ幅です。

Spyderでインデントをどのように表示しますか?

コードを選択し、TabキーまたはShift + Tabキーを押して、インデントまたはインデントを解除します。 コードを変更するための他のツールは、[編集]セクションにあります。