Pythonでよく出るエラー一覧|初心者向けに原因と解決方法を徹底解説

Pythonを学習していると、SyntaxError、NameError、TypeErrorなど、さまざまなエラーに遭遇します。

エラーメッセージを見ると難しそうに感じますが、Pythonのエラーは原因を特定するための重要なヒントです。

本記事では、Python初心者が特に遭遇しやすい「よく出るエラー」を一覧にして、原因・具体例・解決方法をわかりやすく解説します。


Pythonでよく出るエラー一覧

まず、Pythonで頻繁に遭遇するエラーを一覧で確認しましょう。

エラー 主な原因
SyntaxError Pythonの文法が間違っている
IndentationError インデントが間違っている
NameError 定義されていない名前を使用している
TypeError データ型や引数の使い方が不適切
ValueError 値の形式や内容が不適切
IndexError リストなどの範囲外のインデックスを指定
KeyError 辞書に存在しないキーを指定
AttributeError オブジェクトに存在しない属性・メソッドを指定
ZeroDivisionError 0で割っている
FileNotFoundError 指定したファイルが存在しない
ModuleNotFoundError モジュールが見つからない
ImportError モジュールや機能のインポートに失敗
UnboundLocalError ローカル変数が適切に定義されていない
RecursionError 再帰処理が深くなりすぎた

ここから、それぞれ詳しく解説します。


1. SyntaxError

SyntaxErrorとは?

SyntaxErrorは、Pythonの文法(構文)が間違っている場合に発生するエラーです。

Pythonを始めたばかりの人が非常によく遭遇するエラーの一つです。

例えば、次のコードを実行します。

print("Hello"

print()の閉じ括弧がありません。

この場合、

SyntaxError: '(' was never closed

のようなエラーが表示されます。

よくある原因

  • ()の閉じ忘れ

  • []の閉じ忘れ

  • ""や''の閉じ忘れ

  • :の付け忘れ

  • Pythonの文法に存在しない書き方をしている

解決方法

エラーメッセージが示している行付近を確認しましょう。

特に、

if x > 10

のように:を忘れていないか確認することが重要です。

正しくは、

if x > 10:
    print(x)

です。


2. IndentationError

IndentationErrorとは?

IndentationErrorは、インデント(字下げ)が正しくない場合に発生するエラーです。

Pythonではインデントがプログラムの構造を表します。

例えば、

if x > 10:
print(x)

では、print()のインデントがありません。

正しくは、

if x > 10:
    print(x)

とします。

よくある原因

  • インデントの付け忘れ

  • インデントの位置がずれている

  • スペースとタブが混在している

Pythonでは一般的にスペース4つでインデントします。


3. NameError

NameErrorとは?

NameErrorは、定義されていない変数や関数などを使用した場合に発生します。

例えば、

print(name)

と書いたものの、nameを定義していなければ、

NameError: name 'name' is not defined

となります。

解決方法

変数を使用する前に定義します。

name = "Taro"

print(name)

また、変数名のスペルミスにも注意しましょう。

username = "Taro"

print(usernmae)

この場合もNameErrorになります。


4. TypeError

TypeErrorとは?

TypeErrorは、データ型や関数の引数などの使い方が適切ではない場合に発生します。

例えば、

age = 20

print("年齢:" + age)

これは文字列と整数を+で連結しているため、エラーになります。

TypeError: can only concatenate str (not "int") to str

解決方法

str()を使って文字列に変換します。

age = 20

print("年齢:" + str(age))

または、f文字列を使う方法もあります。

print(f"年齢:{age}")

Pythonでは、異なるデータ型を組み合わせるときにTypeErrorが発生することがよくあります。


5. ValueError

ValueErrorとは?

ValueErrorは、データ型としては正しいものの、値の内容が適切ではない場合に発生します。

代表例が文字列を整数に変換するケースです。

number = int("abc")

"abc"は文字列なのでint()に渡せますが、整数として解釈できません。

そのため、

ValueError: invalid literal for int()

となります。

解決方法

整数に変換できる文字列を指定します。

number = int("123")

print(number)

6. IndexError

IndexErrorとは?

IndexErrorは、リストなどで存在しないインデックスを指定した場合に発生します。

例えば、

numbers = [10, 20, 30]

print(numbers[3])

リストのインデックスは、

0 → 10
1 → 20
2 → 30

です。

3は存在しないため、

IndexError: list index out of range

となります。

解決方法

リストの要素数を確認しましょう。

numbers = [10, 20, 30]

print(numbers[2])

また、len()を使って要素数を確認する方法もあります。

print(len(numbers))

7. KeyError

KeyErrorとは?

KeyErrorは、辞書(dict)に存在しないキーを指定した場合に発生します。

例えば、

user = {
    "name": "Taro",
    "age": 20
}

print(user["address"])

addressというキーは存在しないため、

KeyError: 'address'

となります。

解決方法

キーが存在するか確認します。

print(user["name"])

または、get()を使用する方法があります。

print(user.get("address"))

get()を使うと、存在しないキーでも基本的にKeyErrorを避けられます。


8. AttributeError

AttributeErrorとは?

AttributeErrorは、オブジェクトに存在しない属性やメソッドを呼び出した場合に発生します。

例えば、

name = "Python"

name.append("!")

文字列にはappend()というメソッドがないため、

AttributeError: 'str' object has no attribute 'append'

となります。

append()はリストなどで利用します。

languages = ["Python"]

languages.append("Ruby")

print(languages)

9. ZeroDivisionError

ZeroDivisionErrorとは?

ZeroDivisionErrorは、0で割ろうとした場合に発生します。

result = 10 / 0

すると、

ZeroDivisionError: division by zero

となります。

解決方法

0で割らないように条件分岐を入れます。

number = 0

if number != 0:
    result = 10 / number
else:
    print("0では割れません")

10. FileNotFoundError

FileNotFoundErrorとは?

FileNotFoundErrorは、指定したファイルが見つからない場合に発生します。

例えば、

with open("data.txt") as f:
    data = f.read()

実行した場所にdata.txtが存在しなければエラーになります。

主な原因

  • ファイル名が間違っている

  • ファイルの場所が違う

  • 相対パスの指定が間違っている

  • ファイルが削除されている

ファイルのパスを確認しましょう。


11. ModuleNotFoundError

ModuleNotFoundErrorとは?

ModuleNotFoundErrorは、指定したPythonモジュールが見つからない場合に発生します。

例えば、

import pandas

を実行して、

ModuleNotFoundError: No module named 'pandas'

と表示された場合、現在使用しているPython環境にpandasがインストールされていない可能性があります。

解決方法

pipを使ってインストールします。

pip install pandas

環境によっては、

python -m pip install pandas

または、

python3 -m pip install pandas

を使用します。


12. ImportError

ImportErrorとは?

ImportErrorは、モジュールのインポートに失敗した場合などに発生します。

例えば、

from math import hello

mathモジュールにhelloという機能が存在しなければ、ImportErrorになります。

ModuleNotFoundErrorとの違い

簡単に整理すると、

  • ModuleNotFoundError → モジュールそのものが見つからない

  • ImportError → モジュールは見つかったが、指定したものを読み込めない

という違いがあります。


13. UnboundLocalError

UnboundLocalErrorとは?

UnboundLocalErrorは、関数内のローカル変数を、値が設定される前に参照した場合などに発生します。

例えば、

def test():
    print(x)
    x = 10

test()

この場合、xに値を代入する前に参照しています。

解決方法

変数を先に定義します。

def test():
    x = 10
    print(x)

test()

14. RecursionError

RecursionErrorとは?

RecursionErrorは、再帰処理が深くなりすぎた場合などに発生します。

例えば、

def test():
    test()

test()

test()が自分自身を永遠に呼び出しています。

その結果、

RecursionError: maximum recursion depth exceeded

となります。

解決方法

再帰処理には必ず終了条件を設定します。

def countdown(n):
    if n <= 0:
        return

    print(n)
    countdown(n - 1)

countdown(5)

Pythonのエラーを解決する基本手順

エラーが発生したときに、いきなりコードを修正するのではなく、次の順番で確認すると効率的です。

1. エラーの種類を確認する

まず、エラーの最後に表示される部分を確認します。

例えば、

TypeError

ならデータ型や引数の問題、

NameError

なら変数名や関数名の問題である可能性が高いと判断できます。


2. エラーが発生した行を確認する

例えば、

File "sample.py", line 10

と表示されていたら、10行目付近を確認します。

ただし、表示された行が必ずしも根本原因とは限りません。

その前の行で変数に間違った値を入れているケースもあります。


3. エラーメッセージを読む

Pythonのエラーメッセージには、原因を特定するための情報が含まれています。

例えば、

NameError: name 'usernmae' is not defined

なら、

usernmae

という名前が定義されていないことがわかります。

実は、

username

のスペルミスだった、というケースも考えられます。


4. type()でデータ型を確認する

TypeErrorなどで困った場合は、type()が非常に便利です。

x = 100

print(type(x))

実行すると、

<class 'int'>

と表示されます。

文字列なら、

<class 'str'>

リストなら、

<class 'list'>

となります。

「この変数は何型なのか?」を確認することは、Pythonのエラー解決で非常に重要です。


Python初心者が特に覚えておきたい5つのエラー

すべてのエラーを最初から覚える必要はありません。

まずは次の5つを覚えておくとよいでしょう。

1位:TypeError

TypeError

データ型や関数の使い方に問題があるケース。

2位:NameError

NameError

変数名・関数名などが定義されていないケース。

3位:SyntaxError

SyntaxError

Pythonの文法が間違っているケース。

4位:IndexError

IndexError

リストなどの範囲外を指定しているケース。

5位:KeyError

KeyError

辞書に存在しないキーを指定しているケース。

この5つを理解するだけでも、Pythonのエラー対応力はかなり向上します。


Pythonのエラーは怖くない

Python初心者の場合、赤い文字で大量のエラーメッセージが表示されると「プログラムが壊れた」と感じるかもしれません。

しかし、エラーは必ずしも悪いものではありません。

むしろ、

「ここを確認してください」

とPythonが教えてくれている情報です。

例えば、

NameError

なら変数名を確認する。

IndexError

ならリストの範囲を確認する。

KeyError

なら辞書のキーを確認する。

TypeError

ならデータ型を確認する。

というように、エラーの種類から原因を絞り込むことができます。


Pythonのエラーを解決する力を身につけよう

Pythonを実務で使うなら、エラーを完全になくすことよりも、エラーが発生したときに原因を調べて解決できる能力が重要です。

特に、

  • エラーの種類を確認する

  • エラーが発生した行を確認する

  • エラーメッセージを読む

  • print()で値を確認する

  • type()でデータ型を確認する

  • コードを小さく分けて原因を特定する

という習慣を身につけると、エラー対応がかなり楽になります。


まとめ|Pythonのよく出るエラーを覚えておこう

Pythonでは、プログラムを書いているとさまざまなエラーが発生します。

特に初心者が遭遇しやすいのは以下のエラーです。

エラー 覚えておきたいポイント
SyntaxError 文法が間違っている
IndentationError インデントが間違っている
NameError 名前が定義されていない
TypeError 型や引数の使い方が不適切
ValueError 値が適切ではない
IndexError インデックスが範囲外
KeyError 辞書のキーが存在しない
AttributeError 属性・メソッドが存在しない
ZeroDivisionError 0で割っている
FileNotFoundError ファイルが見つからない
ModuleNotFoundError モジュールが見つからない
ImportError インポートに失敗している
UnboundLocalError ローカル変数を適切に参照できていない
RecursionError 再帰処理が深くなりすぎている

Pythonのエラーは、原因を教えてくれる重要な情報です。

エラーが出たら慌てずに、まず「エラーの種類」「発生した行」「エラーメッセージ」の3つを確認しましょう。これだけでも、エラー解決への第一歩になります。

他のPythonエラーの原因と対処法はPythonエラー一覧と対処法に種類別でまとめています。エラーメッセージの読み方もあわせて解説しています。

エラー別の詳しい解説

この一覧で概要をつかんだら、実際に出ているメッセージで詳しい解説を探してください。

エラー詳しい解説
SyntaxErrorSyntaxError / SyntaxWarning(3.12から表示)
IndentationErrorIndentationError / unexpected indent / expected an indented block
TypeErrorTypeError / unsupported operand(+) / 同(/)
ZeroDivisionErrorZeroDivisionError(バージョン別メッセージ表あり)
ファイル・フォルダ系FileNotFoundError / IsADirectoryError / NotADirectoryError
接続系ConnectionRefusedError / ConnectionResetError / TimeoutError
警告(止まらない)RuntimeWarning / ResourceWarning
例外の設計ExceptionとBaseExceptionの違い / 例外処理のベストプラクティス
メッセージ単位の解説はPythonエラー一覧と対処法にもまとめています

プログラミング学習に興味がある方は、まずは無料体験会へ

無料体験会・お申し込みはこちら