Python 初心者がハマりがちなエラー7選

初心者が陥りがちなエラー7選を紹介し、そのエラーが出た時に何を直したら良いかを説明します。

また、エラーが発生した場合の例外処理の書き方はこちらを参考にしてください。
Python 例外処理の書き方


IndentationError

インデントがずれている時に発生します。何行目のインデントがずれているか、エラーメッセージから読みとり、インデントを直しましょう。

print('apple')
 print('banana') # インデントがずれている

>>   File "main.py", line 2
>>   print('banana')
>>   ^ IndentationError: unexpected indent

NameError

定義されていない変数にアクセスした時に発生します。エラーで表示された変数がどのような場合も定義されるように直しましょう。

例えば、以下のようなif文の条件漏れで、変数が定義されてない時におきます。

x = 0

if x > 0:
  text = '正の数'
elif x < 0:
  text = '負の数'

print(text)

>>   NameError            Traceback (most recent call last) 
>>   main.py in <module>()
>>   ----> 8 print(text)
>>  NameError: name 'text' is not defined

SyntaxError

構文エラーです。() 括弧や、: コロンの忘れ、for文のinを書き忘れたりすると発生します。該当箇所のコードを正しい構文で書き直しましょう。

for i range(5): # inが抜けている
  print(i)

>>   File main.py, line 1     
>>   for i range(5):               
>>   ^ SyntaxError: invalid syntax

AttributeError

属性エラー。あるクラスの変数から呼び出す関数が、そのクラスの属性でない場合などに出力される。変数の型を確認し、型変換したり別の関数を使いましょう。

num = 1011
num.startswith('3')

>>   AttributeError                Traceback (most recent call last)
>>   ----> 2 num.startswith('3') 
>>   AttributeError: 'int' object has no attribute 'startswith'

TypeError

型エラー。その型のインスタンスではできない処理をしようとする場合に発生する。

以下の例では、数値型に対して処理ができるsum関数を文字列型で使用したために出るエラー。変数の型を確認し、型変換しましょう。

num_x = '100' 
num_y = '200'

sum([num_x, num_y])

>>   TypeError                 Traceback (most recent call last)
>>   ----> 4 sum([num_x, num_y]) 
>>   TypeError: unsupported operand type(s) for +: 'int' and 'str'

IndexError

リストに対するインデックスエラーなど。リストのインデックス範囲外のデータにアクセスする時に発生します。リストの要素数を確認し、インデックス範囲内に対する処理へ変更しましょう。

x_list = [1, 90, 122, 98]
print(x_list[10])

>>   IndexError                    Traceback (most recent call last)
>>   ----> 2 print(x_list[10]) 
>>   IndexError: list index out of range

KeyError

辞書に対するキーエラー。辞書に存在しないキーに対してアクセスしようとする時に発生します。辞書に存在するキーに対するアクセスのみになるよう、修正しましょう。

x_dict = {'a': 'value_a', 'b': 'value_b'}
x_dict['b']
x_dict['c']

>>   KeyError                      Traceback (most recent call last)
>>   ----> 3 x_dict['c'] 
>>   KeyError: 'c'

関連記事

このエントリーをはてなブックマークに追加