Code Fix

初級

IndentationError: expected an indented block の原因と直し方

if・for・def・whileの本体を書き忘れたときに出る、Python学習者が最初につまずくエラーです。波括弧の代わりにインデントでブロックを表すPythonならではの挙動を整理します。

エラーメッセージの読み方

  File "main.py", line 2
main.py
ファイル名
2
行番号 — Pythonが構文解析を諦めた位置
IndentationError
エラークラス — 実行前の構文チェックで検出されました
expected an indented block after 'if' statement on line 1
内容 — 期待していたもの、または見つけられなかったもの

このエラーが出る典型パターン

パターン1

 1  if True:
 2      print("yes")
      ^
File "main.py", line 2 print("yes") ^^^^^ IndentationError: expected an indented block after 'if' statement on line 1

ifの本体は必ずインデントが必要です。コロンの後で改行しただけでは、Pythonはどこまでが本体か判断できません。

直し方: (空)(スペース4) にします。

この問題を解いてみる →

広告
広告スロット(未設定)

パターン2

 1  def greet():
 2      print("hi")
      ^
File "main.py", line 2 print("hi") ^^^^^ IndentationError: expected an indented block after function definition on line 1

関数定義も本体のインデントが必須です。波括弧を使わないPythonでは、インデントそのものがブロックの境界を表します。

直し方: (空)(スペース4) にします。

この問題を解いてみる →

パターン3

 1  for i in range(3):
 2      print(i)
      ^
File "main.py", line 2 print(i) ^^^^^ IndentationError: expected an indented block after 'for' statement on line 1

forループの本体も同様です。ループの中身がどこまでかは、インデントの深さだけで決まります。

直し方: (空)(スペース4) にします。

この問題を解いてみる →

よくある誤解

コロンを書けば本体は自動で認識されると思いがちですが、コロンは「ここからブロックが始まる」という合図でしかありません。実際に1段インデントした行がなければ、Pythonは本体がどこにも無いと判断します。

まとめ

IndentationError: expected an indented blockは初級でつまずきやすい項目です。上の3パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。

演習をはじめる

関連するエラー

広告
広告スロット(未設定)