1. ホーム
  2. 個人向けサービス
  3. キカガク技術ブログ
  4. 【Invalid Syntax】Python のよくある基本的なエラーと確認方法まとめ。初学者向けにわかりやすく解説!
2021年5月19日

【Invalid Syntax】Python のよくある基本的なエラーと確認方法まとめ。初学者向けにわかりやすく解説!

機械学習の講師をしている株式会社キカガクの安藤です!

本記事では、Python でよくあるエラーを 10 種類、確認方法や解決方法を交えてご紹介します!
Python を使っているとよく遭遇するエラーです。これらのエラーの対処法をマスターして Python をよりスムーズに使えるようにしましょう!

Python ではエラーが出た時にどう対処すればいいのか

Python でエラーを確認する基本的な手順は以下の通りです。

  1. 1まずエラー名を確認する
  2. 2エラーの具体的な内容を確認する

上記の基本的な流れを押さえた上で、Python の代表的なエラー 10 種類、そして解決方法をご紹介します!

本記事で解説する代表的な 10 種類のエラー

  • SyntaxError
  • NameError
  • TypeError
  • ValueError
  • IndentationError
  • IndexError
  • KeyError
  • ModuleNotFoundError
  • FileNotFoundError
  • AttributeError

Python の代表的なエラーの解説と解決方法 10 選

1. SyntaxError

SyntaxError とは

SyntaxError とは、コードの構文や書き方を間違えると起きるエラーです。

例えば Python の関数を下記のように誤った構文で定義すると SyntaxError が出力されます。

def hello() print('kikagaku')
File "<ipython-input-1-4066c70d36ab>", line 1 def hello()   ^ SyntaxError: invalid syntax

上記の SyntaxError の場合、invalid syntax というエラーの内容が書かれており、直訳で無効な構文という意味になります。

SyntaxError が出たときの解決方法

解決方法は、正しい構文に書き換えることです。

今回であれば、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

2. NameError

NameError とは

NameError とは、定義していない変数名を使用した場合に起きるエラーです。

例えば、定義していない変数名を使用した場合、下記の NameError が出力されます。

hello
NameError Traceback (most recent call last) <ipython-input-3-e0807d390f82> in <module>() ----> 1 hello

NameError が出たときの解決方法

解決方法は、変数名のスペルミスを修正、もしくは変数が存在しない場合は変数を定義することです。

今回であれば、変数 hello が定義されていないため、下記のように定義するとエラーが解決できます!

hello = 'kikagaku' hello

3. TypeError

TypeError とは

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 型の計算ができないという意味になります。

TypeError が出たときの解決方法

解決方法は、正しいデータ型に修正することです。

今回であれば数値計算に文字列が使用されているため、下記のように修正するとエラーが解決できます!

1 + 1

補足

int、strについては下記事をご確認ください。

参考 | 数値型 int, float, complex

確認する

参考 | テキストシーケンス型 --- str

確認する

4. ValueError

ValueError とは

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 進数に変換ができない無効な文字があるという意味になります。

ValueError が出たときの解決方法

解決方法は、関数の引数に渡す値を正しい値に修正することです。

今回であれば、int() 関数の引数に浮動小数点があったため、下記のように修正するとエラーが解決できます!

int('1')

5. IndentationError

IndentationError とは

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 というエラー内容が書かれており、直訳で予測されるインデントではないという意味になります。

IndentationError が出たときの解決方法

解決方法は、インデントを正しく使用すること(揃えるなど)です。

今回であれば関数内の 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

6. IndexError

IndexError とは

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 というエラー内容が書かれており、直訳でリストのインデックスが範囲外ですという意味になります。

IndexError が出たときの解決方法

解決方法は、リストにインデックスを追加するか、範囲内のインデックスを指定することです。

今回であれば、範囲外の値を指定していたため、下記のように修正するとエラーが解決できます!

numbers = [0, 1, 2] numbers[2]

7. KeyError

KeyError とは

KeyError とは、辞書型で登録した値をキー指定して取得する場合に、登録していないキーを指定した場合に起きるエラーです。

例えば、下記のように記述した場合、KeyError が出力されます。

city = {'北海道' : '札幌', '岩手' : '盛岡', '宮城' : '仙台'} city['東京']
KeyError Traceback (most recent call last) <ipython-input-12-be52737b3620> in <module>() 1 city = {'北海道' : '札幌', '岩手' : '盛岡', '宮城' : '仙台'} ----> 2 city['東京'] KeyError: '東京'

KeyError が出たときの解決方法

解決方法は、登録してあるキーを指定することです。

今回であれば、東京という登録していない値を指定していたため、下記のように修正するとエラーが解決できます!

city = {'北海道' : '札幌', '岩手' : '盛岡', '宮城' : '仙台'} city['北海道']

8. ModuleNotFoundError

ModuleNotFoundError

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'

ModuleNotFoundError が出たときの解決方法

解決方法は、存在するモジュールをインポートすることです。モジュール名のスペルミスを確認、また正しい場所からモジュールをインポートしましょう。

もしモジュールが存在しない場合は、pip コマンドでインストールしてください

今回であれば、モジュールのnumpyが、nump とスペルミスをしているため、下記のように修正するとエラーが解決できます!

import numpy as np

9. FileNotFoundError

FileNotFoundError とは

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'

FileNotFoundError が出たときの解決方法

解決方法は、正しいファイル名に修正するか、正しい指定フォルダにすることです。

今回であれば、ファイル名にスペルミスがあったため、下記のように修正するとエラーが解決できます!

file = open('sample.txt')

10. AttributeError

AttributeError とは

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 メソッドがないという意味です。

AttributeError が出たときの解決方法

解決方法は、オブジェクトに存在する属性・メソッドを使用すること、もしくは、オブジェクトを変更することです。

今回であれば、int 型(オブジェクト)には append メソッドが存在しないため、append メソッドが使えるオブジェクトに変える必要があります。

そのため、下記のようにリストで定義すると、エラーが解決できます!

kikagaku = [0] kikagaku.append(1)

補足

オブジェクト、属性・メソッドについてはこちらをご確認ください。

参考 | オブジェクト、値、および型

確認する

参考 | 属性・メソッド

確認する

Python のよくあるエラーをマスターしてステップアップしよう!

Python のエラーを解決方法を交えて紹介いたしました。

Python の代表的なエラーと基本的な解決方法を把握しておく事で、基礎的な部分の解決はもちろん、この記事でご紹介したエラー以外のものが出た際でも対応しやすくなります。

エラー名を把握した上で、エラーの具体的な内容を把握する、こちらの流れをぜひ実践してみてください!

またよく起こるエラーについて動画で学習したい!という方は、キカガク元副社長の動画がおすすめです。


この記事が皆さまの参考になれば幸いです!

最速で学びたい方:キカガクの長期コースがおすすめ

人材育成実績15万人以上

キカガクの長期コースはプログラミング経験ゼロの初学者が最先端技術を使いこなすAIエンジニアになるためのサポート体制が整っています!

実際に未経験からの転職・キャリアアップに続々と成功中です

まずは無料説明会で、キカガクのサポート体制を確認しにきてください!

説明会ではこんなことをお話します!

  • 国も企業も育成に力を入れている先端 IT 人材とは
  • キカガクの研修実績
  • 長期コースでの学び方、できるようになること
  • 料金・給付金について
  • 質疑応答

まずは無料で学びたい方: Python&機械学習入門コースがおすすめこちら

基礎を習得する Python速習 機械学習入門

AI・機械学習を学び始めるならまずはここから!経産省の Web サイトでも紹介されているわかりやすいと評判の Python&機械学習入門コースが無料で受けられます!
さらにステップアップした脱ブラックボックスコースや、IT パスポートをはじめとした資格取得を目指すコースもなんと無料です!

参考リンク

参考 | Python 3.9.14 ドキュメント

確認する

SHARE




キカガクラーニング

AI/データサイエンス学びはじめの方におすすめの記事

未経験からAI人材 無料説明会に参加

未経験からAI人材 無料説明会に参加