
機械学習の講師をしている株式会社キカガクの安藤です!
本記事では、Python でよくあるエラーを 10 種類、確認方法や解決方法を交えてご紹介します!
Python を使っているとよく遭遇するエラーです。これらのエラーの対処法をマスターして Python をよりスムーズに使えるようにしましょう!
目次
Python でエラーを確認する基本的な手順は以下の通りです。

上記の基本的な流れを押さえた上で、Python の代表的なエラー 10 種類、そして解決方法をご紹介します!
本記事で解説する代表的な 10 種類のエラー
SyntaxError とは、コードの構文や書き方を間違えると起きるエラーです。
例えば Python の関数を下記のように誤った構文で定義すると SyntaxError が出力されます。
def hello() print('kikagaku')
File "<ipython-input-1-4066c70d36ab>", line 1 def hello() ^ SyntaxError: invalid syntax
上記の SyntaxError の場合、invalid syntax というエラーの内容が書かれており、直訳で無効な構文という意味になります。
解決方法は、正しい構文に書き換えることです。
今回であれば、def 構文の () の後に :(コロン)を書き忘れているため、下記のように修正するとエラーが解決できます!
def hello(): print('kikagaku')
他の SyntaxError の種類
def hello(): print('kikagaku'
File "<ipython_input-1-37c872c02c9a>", line 2 print('kikagaku' ^ SyntaxError: unexpected EOF while parsing
def hello(): # print の前に全角スペースが入ってしまっているエラー print('kikagaku')
File "<ipython-input-2-a1e0843d1546>", line 1 def hello(): ^ SyntaxError: invalid character in identifier
NameError とは、定義していない変数名を使用した場合に起きるエラーです。
例えば、定義していない変数名を使用した場合、下記の NameError が出力されます。
hello
NameError Traceback (most recent call last) <ipython-input-3-e0807d390f82> in <module>() ----> 1 hello
解決方法は、変数名のスペルミスを修正、もしくは変数が存在しない場合は変数を定義することです。
今回であれば、変数 hello が定義されていないため、下記のように定義するとエラーが解決できます!
hello = 'kikagaku' hello
TypeError とは、データ型が間違えている場合などに起きるエラーです。
例えば、数値計算で文字列を使用すると下記のような TypeError が出力されます。
1 + '1'
TypeError Traceback (most recent call last) <ipython-input-1-7ff5cb60d31b>in <module>() ----> 1 + '1' TypeError: unsupported operand type(s) for +: 'int' and 'str'
上記の TypeError の場合、unsupported operand type(s) for +: 'int' and 'str' というエラーの内容が書かれており、直訳で + 記号は int 型と str 型の計算ができないという意味になります。
解決方法は、正しいデータ型に修正することです。
今回であれば数値計算に文字列が使用されているため、下記のように修正するとエラーが解決できます!
1 + 1
ValueError とは、関数の引数に間違った型を渡した場合に起きるエラーです。
例えば、数値データ(int 型や float 型)を引数に取るものに対して関数が処理できない値を渡した場合、下記のような ValueError が出力されます。
int('1.0')
ValueError Traceback (most recent call last) <ipython-input-3-ebd1f39da3f3> in <module>() ----> 1 int('1.0') ValueError: invalid literal for int() with base 10: '1.0'
上記の ValueError の場合、invalid literal for int() with base 10: '1.0' というエラーの内容が書かれており、直訳で int() 関数において、10 進数に変換ができない無効な文字があるという意味になります。
解決方法は、関数の引数に渡す値を正しい値に修正することです。
今回であれば、int() 関数の引数に浮動小数点があったため、下記のように修正するとエラーが解決できます!
int('1')
IndentationError とは、インデントが正しくない場合に起きるエラーです。
インデントとは、字下げのことを指し、コードの行頭に半角スペースを挿入して先頭の文字を右にずらすことです。
例えばインデントがずれていた場合、下記のような IndentationError が出力されます。
def hello(): self.name = 'kikagaku' self.age = 0
File "<ipython-input-7-4986585684a4>", line 3 self.age = 0 ^ IndentationError: unexpected indent
上記の IndentationError の場合、unexpected indent というエラー内容が書かれており、直訳で予測されるインデントではないという意味になります。
解決方法は、インデントを正しく使用すること(揃えるなど)です。
今回であれば関数内の self.age = 0 が後ろにズレてしまっていたため、下記のようにインデントを揃えるとエラーが解決できます!
def hello(): self.name = 'kikagaku' self.age = 0
他の IndentationError の種類
def hello(): self.name = 'kikagaku' self.age = 0
File "<ipython-input-3-3659862ac94b>", line 2 self.name = 'kikagaku' ^ IndentationError: expected an indented block
IndexError とは、リスト等で格納された値をインデックスで取得する際に、範囲外の値を指定した場合に起きるエラーです。
インデックスとはリスト等に格納された値が、その中で何番目かを示すものです。
例えば、下記のように numbers を定義し、範囲外の値を取得しようとした場合、IndexError が出力されます。
numbers = [0, 1, 2] numbers[10]
IndexError Traceback (most recent call last) <ipython-input-9-b4bac35b834c> in <module>() 1 numbers = [0, 1, 2] ----> 2 numbers[10] IndexError: list index out of range
上記の IndexError の場合、list index out of range というエラー内容が書かれており、直訳でリストのインデックスが範囲外ですという意味になります。
解決方法は、リストにインデックスを追加するか、範囲内のインデックスを指定することです。
今回であれば、範囲外の値を指定していたため、下記のように修正するとエラーが解決できます!
numbers = [0, 1, 2] numbers[2]
KeyError とは、辞書型で登録した値をキー指定して取得する場合に、登録していないキーを指定した場合に起きるエラーです。
例えば、下記のように記述した場合、KeyError が出力されます。
city = {'北海道' : '札幌', '岩手' : '盛岡', '宮城' : '仙台'} city['東京']
KeyError Traceback (most recent call last) <ipython-input-12-be52737b3620> in <module>() 1 city = {'北海道' : '札幌', '岩手' : '盛岡', '宮城' : '仙台'} ----> 2 city['東京'] KeyError: '東京'
解決方法は、登録してあるキーを指定することです。
今回であれば、東京という登録していない値を指定していたため、下記のように修正するとエラーが解決できます!
city = {'北海道' : '札幌', '岩手' : '盛岡', '宮城' : '仙台'} city['北海道']
ModuleNotFoundError とは、指定したモジュールが存在しない場合に起きるエラーです。
例えば、下記のように記述した場合、ModuleNotFoundError が出力されます。
import nump as np
ModuleNotFoundError Traceback (most recent call last) <ipython-input-1-b6dac4999c71> in <module>() ----> 1 import nump as np ModuleNotFoundError: No module named 'nump'
解決方法は、存在するモジュールをインポートすることです。モジュール名のスペルミスを確認、また正しい場所からモジュールをインポートしましょう。
もしモジュールが存在しない場合は、pip コマンドでインストールしてください
今回であれば、モジュールのnumpyが、nump とスペルミスをしているため、下記のように修正するとエラーが解決できます!
import numpy as np
FileNotFoundErrorとは、指定したファイルが見つからない場合に起きるエラーです。
例えば、下記のように記述した場合、FileNotFoundErrorが出力されます。
file = open('sampl.txt')
FileNotFoundError Traceback (most recent call last) <ipython-input-20-a51dd50f8596> in <module>() ----> 1 file = open('sampl.txt') FileNotFoundError: [Errno 2] No such file or directory: 'sample.txt'
解決方法は、正しいファイル名に修正するか、正しい指定フォルダにすることです。
今回であれば、ファイル名にスペルミスがあったため、下記のように修正するとエラーが解決できます!
file = open('sample.txt')
AttributeError とは、オブジェクトに存在しない属性・メソッドを使用した際に起きるエラーです。
例えば、以下のように存在しないメソッドを実行すると、AttributeError が出力されます。
kikagaku = 0 kikagaku.append(1)
AttributeError Traceback (most recent call last) <ipython-input-29-dcca80c34845> in () <module>() 1 kikagaku = 0 ----> 2 kikagaku.append(1) AttributeError: 'int' object has no attribute 'append'
上記の AttributeError の場合、'int' object has no attribute 'append' というエラーの内容が書かれており、直訳でint 型(オブジェクト)には append メソッドがないという意味です。
解決方法は、オブジェクトに存在する属性・メソッドを使用すること、もしくは、オブジェクトを変更することです。
今回であれば、int 型(オブジェクト)には append メソッドが存在しないため、append メソッドが使えるオブジェクトに変える必要があります。
そのため、下記のようにリストで定義すると、エラーが解決できます!
kikagaku = [0] kikagaku.append(1)
Python のエラーを解決方法を交えて紹介いたしました。
Python の代表的なエラーと基本的な解決方法を把握しておく事で、基礎的な部分の解決はもちろん、この記事でご紹介したエラー以外のものが出た際でも対応しやすくなります。
エラー名を把握した上で、エラーの具体的な内容を把握する、こちらの流れをぜひ実践してみてください!
またよく起こるエラーについて動画で学習したい!という方は、キカガク元副社長の動画がおすすめです。
この記事が皆さまの参考になれば幸いです!
.jpg&w=3840&q=75)
キカガクの長期コースはプログラミング経験ゼロの初学者が最先端技術を使いこなすAIエンジニアになるためのサポート体制が整っています!
実際に未経験からの転職・キャリアアップに続々と成功中です
まずは無料説明会で、キカガクのサポート体制を確認しにきてください!
説明会ではこんなことをお話します!
.png&w=3840&q=75)
AI・機械学習を学び始めるならまずはここから!経産省の Web サイトでも紹介されているわかりやすいと評判の Python&機械学習入門コースが無料で受けられます!
さらにステップアップした脱ブラックボックスコースや、IT パスポートをはじめとした資格取得を目指すコースもなんと無料です!
参考 | Python 3.9.14 ドキュメント
確認するSHARE
AI/データサイエンス学びはじめの方におすすめの記事
コース一覧
注目記事
新着記事