本文へ進む

教材一覧 / Pythonのエラーを原因から直す

Pythonのエラーを原因から直す

更新:2026-09-09

エラーは、できないという評価ではなく、実行を続けられなくなった場所を知らせる情報です。まず表示の最後の行にあるエラー名を読み、行番号を確認し、その行と直前の行を見直します。コードを何か所も同時に変えず、原因と思う箇所を1つ直して再実行しましょう。

SyntaxError:書き方として読み取れない

if score >= 60
  print('合格')

この例ではifの行の最後に : がありません。score = 70 を先に書き、if score >= 60: に直します。閉じるカッコや引用符の不足、全角の記号も確認してください。エラーの行の1つ前でカッコを閉じ忘れている場合もあります。

日本語の文章を文字列の中に書くことはできますが、コードの区切りに使うスペースや記号は半角を使います。対応する学習は第1章第3章です。

IndentationError:処理のまとまりが決まらない

for i in range(3):
print(i)

くり返しの中身となる print(i) に字下げが必要です。この教材では半角スペース2つでそろえています。字下げの深さは、その行がどの条件分岐・くり返しの中にあるかを示します。

スペースとタブを混ぜると TabError になる場合もあります。見た目がそろっているのに直らないときは、行頭の空白を消して、同じ方法で入れ直してください。第3章で字下げの範囲を確認できます。

NameError:その名前の値がまだない

total = 10
print(totel)

totaltotel は別の名前です。大文字・小文字も区別されます。先に代入した名前と、後から使った名前が完全に一致するかを確認します。

各実行は変数をリセットして始まります。別の実行欄で total = 10 と書いても、今の欄で使えるとは限りません。必要な代入やimportは、その欄のコードに含めてください。

TypeErrorとValueError:値の種類を確かめる

age = '16'
print(age + 1)

引用符の中の '16' は文字列です。整数と足すためには int(age) + 1 のように変換します。input() が返す値も文字列なので、整数として扱うなら int(input()) を使います。

一方、int('十六')int('16歳') は整数表記として読み取れず、ValueError になります。変換すればどんな文字でも数になるわけではありません。まず入力値そのものを確認してください。第2章で練習できます。

IndexError:配列の外の位置を見ている

a = [12, 18, 9]
print(a[3])

要素は3個ですが、Pythonの添字は0から始まるため、使える位置は0、1、2です。最後は a[2] または a[len(a) - 1] で取り出せます。要素数と最後の添字を区別してください。

全要素を読むなら、for i in range(len(a)): とすると0から最後の添字まで動きます。range(1, len(a) + 1) のまま a[i] を使うと、先頭を飛ばし、最後に範囲外へ進みます。復習は第5章です。

エラーは出ないのに、答えが違う

total = 0
for i in range(1, 4):
  total = total + i
print(total)

1から4まで足して10にしたかったのに、出力は6になります。Pythonの range(1, 4) が作る値は1、2、3で、4を含まないためです。range(1, 5) にすると10になります。実行できることと、目的どおりに動くことは別の確認です。

途中の値を知りたいときは、くり返しの中に print(i, total) を入れてください。初期値、1回目、2回目という順で、予想と最初に違った箇所を探します。

実行が止まらない

whileの条件がずっと真になると終わりません。たとえば i = 0while i < 3: の中に print(i) だけを書いても、iは0のままです。くり返しの中で i = i + 1 と更新する必要があります。

教材の実行機能には、処理が長く続くと中断する仕組みがあります。中断メッセージが出たら、初期値・条件・更新の3か所を確認してください。処理量が大きい正しいコードでも中断される場合があるので、小さい数で試します。

実行環境を読み込めない

「実行環境を準備中」の間は、Python実行ボタンが使えません。初回は読み込みに時間がかかることがあります。失敗と表示された場合は、接続を確認し、残したいコードを手元にコピーしてからページを再読み込みしてください。

学校の端末では外部配信サービスへの接続が制限されている場合があります。制限を回避せず、先生や管理担当者へ相談してください。実行できなくても、各欄の「最初のコードを読む」を開くと例を読めます。JavaScriptを無効にしている場合も本文とコードは読むことができます。

確認問題:先に直すのはどこ?

n = '4'
total = 0
for i in range(n):
  total = total + i
print(total)
原因と修正例を見る

range() に文字列を渡していることが原因です。range(int(n)) に直すと、0、1、2、3を足して6になります。4も含めて足す課題なら、型だけでなく範囲も変える必要があります。エラー修正の後に、問題の目的と結果を照合するところまで取り組みましょう。

エラーの正式な意味はPython公式ドキュメント「エラーと例外」を参照してください。ここに掲載したコードと説明は、初学者の練習用に作成したものです。