Python 初心者必読! これだけは知っておきたいよくあるエラー10選 【Python エラー一覧】

はじめに

本記事では (AI Academyに無料登録後、購読可能な)「構文エラーと例外のテキストに記載されている12種類のエラーから10種類のエラーを解説します。その他のエラーも知りたい方は是非読んで見てください。

このサイトは、Pythonや生成AIなどを学べるオンラインプログラミングスクール AI Academy Bootcampが運営しています。

構文エラーと例外の違い

Pythonでは構文エラー(syntax error)と例外(exception)の2種類のエラーが存在し、これらは区別されます。構文エラーとは、その字の通り構文として誤りがある場合に発生するエラーで、構文が正しくてもプログラム実行中に発生するエラーは例外と呼びます。「エラー」と「例外」を特に使い分けず、「エラー」と一括りに呼ぶ事もあります。

エラーの種類

構文エラーを含むエラーには、以下のようなものがあります。

・SyntaxError
・IndentationError
・NameError
・TypeError
・ValueError
・AttributeError
・IndexError
・KeyError
・ModuleNotFoundError
・ZeroDivisionError

エラーが発生すると、エラーが発生した行のプログラム以降のコードは実行されません。また、このテキストでは上記のエラーに関して1つ1つ説明していきますが、今の段階では全て覚える必要はありません。太字のエラーを優先的に理解するようにしてみてください。 

SyntaxError

SyntaxErrorはPythonの構文として正しくない場合に発生するエラーです。コロン:()の閉じ忘れなどがある場合に構文エラーになります。SyntaxErrorが発生した場合は、Pythonの構文が間違っていないか確認しましょう。構文エラーになるプログラムは以下の通りです。

for i in range(5)

エラー内容

  File "<stdin>", line 1
    for i in range(5)
                    ^
SyntaxError: invalid syntax

上記はfor文の文末に必要な:が記述されていないため、SyntaxErrorが発生しています。

もう1つの構文エラーに関しても確認してみましょう。

print('AI Academy

エラー内容

  File "<stdin>", line 1
    print('AI Academy
                    ^
SyntaxError: EOL while scanning string literal

上記はprint()関数の文末に必要な)の閉じ忘れがあるため、SyntaxErrorが発生しています。

✨生成AIコース 受講お申込み受付中!

生成AIの概要やChatGPTの基礎操作、プロンプトエンジニアリングの基礎から実践まで学べます。演習課題を通じて、ご自身の業務に適したプロンプトやツールを作成し、生成AIを業務に活用できるスキルが身につきます。

受講特典:受講期間中、59種類の充実したAI Academyのオリジナルテキストを使いながら学んでいただけます。 例)「機械学習に必要な数学編」「機械学習アルゴリズムの理論と実装編」「自然言語処理編」「プロンプトエンジニアリング入門編」など

IndentationError

IndentationErrorは、インデントが正しくない場合に発生するエラーです。IndentationErrorが発生した場合は、インデントが正しく行われているか確認しましょう。

a = 10
  print(a)

エラー内容

  File "<stdin>", line 1
    print(a)
    ^
IndentationError: unexpected indent

上記は2行目のprint(a)の先頭に余分なスペースが入ってる為、IndentationErrorが発生しています。またprint()関数や変数定義の前に全角スペース、半角スペースが含まれていてもIndentationErrorが発生します。

✨LINE友だち限定:特別な「動画プラン」受講お申込み受付中!

2025年、未来への投資をしませんか? AI Academy Bootcamp LINE公式 では、AIリテラシーからPython、データ分析、Web開発まで学べる「動画プラン」をご用意!さらにお得な割引クーポンもプレゼントしています!

単独で学ぶより、全コースを一気に学ぶことで得られる「学習シナジー効果」が特長。
基礎から応用まで、データ分析とAI開発のスキルを効率よく身につけられます。

「動画プラン」のおすすめポイントを以下の動画で紹介しています!

動画プランを受講された方のリアルなレビューです。受講をご検討中の方、ぜひチェックしてみてください!

NameError

NameErrorは、変数名の間違いや綴間違い(スペスミス)などで、名前が見つからなかった場合のエラーです。Pythonでは、大文字小文字も区別されるため、その場合でもNameErrorになります。NameErrorが発生した場合は、その変数名が定義されているか、綴り間違いしていないか確認しましょう。

a = 10
print(A)

エラー内容

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'A' is not defined

上記は変数aを小文字で定義しているのにも関わらず、大文字Aとしてprint()関数の引数に渡している為にNameErrorが発生しています。

TypeError

TypeErrorは異なるデータ型同士の演算や関数にて処理が行われた場合に発生するエラーです。TypeErrorが発生した場合は、演算するデータの型が正しいか確認しましょう。

a = 10
b = 'hello'
a + b

エラー内容

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'

上記は変数aと変数bがそれぞれ異なったデータ型の演算がされている為にTypeErrorが発生しています。

ValueError

ValueErrorは型は正しくても、値が適切でない場合に発生するエラーです。ValueErrorが発生した場合は関数に渡した値が適切かどうか確認してみましょう。

float('AI Academy')

エラー内容

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: could not convert string to float: 'AI Academy'

上記は、float()の引数に文字列が渡されている為にValueErrorが発生しています。ただし、文字列型の数値の場合はエラーは発生しません。

float("10")

出力結果

10.0

🎁ちょっとひと息 ! 業務や学習に役立つライブラリーをプレゼント !

オンラインプログラミングスクールのAI Academy Bootcamp LINE公式のライブラリーでは無料動画、講座、最新技術資料など、学習や業務に役立つ秀逸な教材や実践的なリソースを豊富に取り揃えています!毎週新しいコンテンツも更新中です。LINE友だち登録でプレゼントします。ぜひご活用ください!

LINE Libraryで人気 の動画です。

倍速で学ぶ!生成AIを活用したプログラミング勉強法】 生成AIを活用して効率的にプログラミングを学ぶ方法を解説しています。生成AIの基本的な仕組みや効果的な活用法、注意点についても詳しく説明。勉強法とともに生成AIそのものについても学べる内容となっています。ぜひご覧ください!

AttributeError

AttributeErrorは、属性(Attribute)を呼び出す際に発生するエラーです。属性(Attribute)とは、オブジェクトに存在する変数やメソッドのことです。オブジェクトやメソッドに関しては「Python クラスとオブジェクト」(AI Academyに無料登録後、購読可能!)にて解説しています。AttributeErrorが発生した場合は、オブジェクト名、識別子名は正しいかどうか確認しましょう。具体的には、標準関数dir()を用いると、そのオブジェクトが対象の変数やオブジェクト(つまり属性)を持ち合わせているか確認出来ます。 

a = 10
a.append(20)

エラー内容

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'int' object has no attribute 'append'

上記の変数aには、append()という属性を持ち合わせていないため、AttributeErrorが発生しています。dir()を用いると一覧を確認出来ます。

print(dir(a))

出力結果

['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']

上記のように変数aにはappend()が定義されていません。append()はリスト型で利用できるメソッドですので、以下のようにすれば解決出来ます。

a = [10]
a.append(20)
print(a)

出力結果

[10, 20]

IndexError

IndexErrorはリスト型やタプル型に対して、要素数を超えたインデックス値を指定した場合に発生するエラーです。IndexErrorが発生した場合は要素数は正しいかを確認し、その上で指定したインデックスが正しいか確認しましょう。

a = [10, 20, 30] # 3つの要素
print(a[3]) # インデックスは0からカウント

エラー内容

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

上記は、範囲外のインデックス「3」を指定したことで、IndexErrorが発生しています。インデックス(添字)は0から数えますので、変数aには0、1、2は指定可能ですが、範囲外のインデックス(4、5、100、5000などを指定するとIndexErrorになります。)

KeyError

KeyErrorは、辞書型に対してキーを指定して取得する際に、存在しないキーを指定した際に発生するエラーです。KeyErrorが発生した場合には、定義した辞書に含まれるキーが正しいかどうか、指定したキーが存在するか確認しましょう。

dic = {"age": 30, "name": "AI太郎"}
dic["email"]

エラー内容

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'email'

キーの一覧を取得するkeys()メソッドも用意されているので確認が出来ます。

print(dic.keys())

出力結果

dict_keys(['age', 'name'])

ModuleNotFoundError

ModuleNotFoundErrorは、読み込んだモジュールが見つからない場合に発生するエラーです。ModuleNotFoundErrorが発生した場合は、モジュール名は正しいか、importしようとしたモジュールがインストールされているか確認してみましょう。

import AI

エラー内容

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'AI'

ZeroDivisionError

ZeroDivisionErrorは、数値に対する演算の際に、0で割り算等が行われた場合に発生するエラーです。※割り算等と記載したのは、除算/だけでなく、整数除算//、剰余演算%でも発生するためです。ZeroDivisionErrorが発生した場合は、割る数が0になっていないか確認しましょう。

a = 10
print(a / 0) # print(a // 0)でも同様にZeroDivisionErrorが発生します。

エラー内容

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero

もっとPythonを学びたい方へ🎁

Pythonの基本文法やデータ分析の基礎や統計学基礎などの講義テキストはAI Acaddemyの無料アカウントに登録することで、購読可能です。

AI Academy Bootcampの公式LINELibrary で人気の資料🎁です。友だち登録してくださった方にプレゼントします。

【プロンプトを自動生成するGPTsエラー原因の特定やリファクタリング(コードの効率化)などのプロンプトが作成可能です。学習や開発を効率よくサポートします!業務で役立つAI Academyオリジナルプロンプト付です

AI Academy Bootcamp ではAI・データサイエンス、機械学習の実践力を高める全4コース40時間以上の動画が見放題!AIの学習に必須のPythonの学習から始まり、データサイエンス・機械学習など、目的に応じた幅広い分野をカバーしています。

無料講義や無料動画を試して頂いて、ご受講をご検討頂けましたら幸いです。