Pythonの基本的なエラー一覧¶
目的
Pythonの基本的なエラーを知る。
構文のエラー¶
SyntaxError¶
コロン:
の付け忘れなど不正な構文のエラー。
IndentationError¶
タブとソフトタブ(複数の半角スペース)のようにインデントが混合していたり、同一階層のインデントが揃っていなかったりしたときのエラー。
タブの混合
for i in range(5):
print(i) # タブ
print(i) # ソフトタブ(半角スペース4個)
# IndentationError: unindent does not match any outer indentation level
インデントの不揃い
for i in range(5):
print(i)
print(i) # インデントが揃っていない
# IndentationError: unindent does not match any outer indentation level
値・タイプのエラー¶
NameError¶
未定義の変数名を参照するなど名前が見つからないときのエラー。
TypeError¶
関数や演算子による処理のときに、不適切な型の値を利用したときのエラー。
引数の個数の不一致
def add(x, y):
return x + y
add(1) # 実引数が一つ足りない
# TypeError: add() missing 1 required positional argument: 'y'
引数の個数の不一致
l = []
l.append() # 実引数が一つ必須
# TypeError: list.append() takes exactly one argument (0 given)d() missing 1 required positional argument: 'y'
引数の型の不一致
print(float(['130.5431', '35.123'])) # 文字列か整数以外の値を実引数として与えている
# TypeError: float() argument must be a string or a number, not 'list'
異なる型の値の比較演算
print(3 < 'a') # 数字の3と文字列aを比較している
# TypeError: '<' not supported between instances of 'int' and 'str'
異なる型の値の算術演算
print(3 + 'a') # 数字の3と文字列aを足している
# TypeError: unsupported operand type(s) for +: 'int' and 'str'
AttributeError¶
存在しない属性を参照したときのエラー
存在しない属性の参照
class Stop:
def __init__(self, lat, lng):
self.lat = lat
self.lng = lng
ritsumeikan = Stop(35.03497163, 135.72602961)
print(ritsumeikan.routes) # Stopクラスに存在しない属性routesを参照している
# AttributeError: 'Stop' object has no attribute 'routes'
IndexError¶
リストの長さを超えたインデックスを使って、範囲外の位置の要素を参照したときのエラー。
リストの範囲外の参照
l = [10, 20, 30]
print(l[3]) # リストの長さが3なので、インデックスの最大値は2なのに、3を指定している
# IndexError: list index out of range
KeyError¶
辞書に登録されていないキーを使って値を参照したときのエラー。
未登録のキーによる参照
bearing = {'E': '東', 'W': '西', 'S': '南', 'N': '北'}
print(bearing['M']) # 未登録のキー'M'を使って辞書の値を参照している
# KeyError: 'M'
ファイル・モジュールのエラー¶
FileNotFoundError¶
読み込もうとしているファイルが見つからないときのエラー。ファイルへのパスが正しいか要確認。
ファイルと異なるディレクトリで実行
fi = open('kyotocitybus_stop.dat', 'r', encoding='utf-8') # プログラムを実行しているディレクトリに存在しないデータファイルを読み込んでいる
line = fi.readline()
print(line)
# FileNotFoundError: [Errno 2] No such file or directory: 'kyotocitybus_stop.dat'
ModuleNotFoundError¶
インポートしようとしているプログラムが見つからないときのエラー。プログラムへのパスが正しいか要確認。外部モジュールの場合は、pip list
を実行してそのモジュールをインストール済みか要確認。