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

【Invalid Syntax】Python のよくある基本的なエラーと確認方法まとめ

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

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

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

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

まずエラー名を確認する
エラーの具体的な内容を確認する
Python エラーの確認方法

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

本記事で解説する代表的な 10 種類のエラー
  • SyntaxError
  • NameError
  • TypeError
  • ValueError
  • IndentationError
  • IndexError
  • KeyError
  • ModuleNotFoundError
  • FileNotFoundError
  • AttributeError

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

1. SyntaxError

SyntaxError とは

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

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

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 が出力されます。

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 が出力されます。

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

4. ValueError

ValueError とは

ValueError とは、関数の引数に間違った型を渡した場合に起きるエラーです。

例えば、数値データ(int 型や float 型)を引数に取るものに対して関数が処理できない値を渡した場合、下記のような ValueError が出力されます。

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 が出力されます。

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 が出力されます。

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 が出力されます。

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 が出力されます。

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が出力されます。

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 が出力されます。

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

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

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

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

こちらの記事もオススメ

まずは無料で学びたい方・最速で学びたい方へ

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

Python&機械学習入門コース

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

無料で学ぶ

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

一生学び放題

続々と転職・キャリアアップに成功中!受講生ファーストのサポートが人気のポイントです!

AI・機械学習・データサイエンスといえばキカガク!
非常に需要が高まっている最先端スキルを「今のうちに」習得しませんか?

無料説明会を週 2 開催しています。毎月受講生の定員がございますので確認はお早めに!

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

参考リンク

参考 Python 3.9.14 ドキュメント