はじめに
Pythonは人気なプログラミング言語ですが、初心者から上級者まで陥りやすいエラーが多数存在します。
今回は私が遭遇した事例を基にエラーとその対処方法を備忘録を兼ねて記事にします。
1. IndentationError: インデント(字下げ)に関するエラー
def greet():
print("Hello!")
エラーメッセージ
IndentationError: expected an indented block
原因
Pythonはインデント(スペースやタブ)で処理のブロックを示す言語です。上記のコードではdef greet():
のあとにインデントがないためエラーになります。
対処法
def greet():
print("Hello!") # ← ここをスペース4つ or タブで字下げ
2. NameError: 変数名が見つからないエラー
発生例
print(score)
エラーメッセージ
NameError: name 'score' is not defined
原因
変数score
がまだ定義されていない(またはタイプミス)状態で呼び出しています。
対処法
score = 100
print(score)
先に変数を定義しましょう。もしくは、変数名が正しいか確認しよう(例:socre
などの打ち間違いも多い)。
3. TypeError: 型が合っていないエラー
発生例
age = 25
print("あなたの年齢は" + age + "歳です")
エラーメッセージ
TypeError: can only concatenate str (not "int") to str
原因
文字列(str
)と数値(int
)をそのまま「+」で連結しようとしたため。
対処法
print("あなたの年齢は" + str(age) + "歳です")
またはf-string
を使うのが便利
print(f"あなたの年齢は{age}歳です")
4. IndexError: インデックスの範囲外アクセス
発生例
colors = ["red", "green", "blue"]
print(colors[3])
エラーメッセージ
IndexError: list index out of range
原因
リストのインデックスは0から始まるので、colors[3]は存在しない要素を指定しています。
対処法
print(colors[0]) # red
print(colors[-1]) # blue(最後の要素)
インデックスを使う前にlen(colors)
で要素数を確認しよう。
5. SyntaxError: 文法エラー
発生例
if x == 5
print("x is 5")
エラーメッセージ
SyntaxError: expected ':'
原因
if
やfor、def
などの文は「:(コロン)」が必要です。
対処法
if x == 5:
print("x is 5")
6. ValueError: 値の型はOKだけど中身がダメ
発生例
num = int("abc")
エラーメッセージ
ValueError: invalid literal for int() with base 10: 'abc'
原因
int()
に文字列を渡すこと自体はOKだが、「数字っぽい文字列」でなければ変換できません。
対処法
num = int("123") # OK
入力値を処理する前に.isdigit()
などでチェックすると安心
s = "123"
if s.isdigit():
num = int(s)
まとめ
エラー | エラーの内容 | 対処法 |
---|---|---|
IndentationError | インデントに関するエラー | スペースを4つ開けるorタブで字下げ |
NameError | 変数が定義されていないorタイプミス | 変数を定義するorスペルチェック |
TypeError | 間違った型を渡してしまった | 文字列型と整数型を混ぜない |
IndexError | インデックスの範囲外アクセス | インデックスは0から始まるので要素数を確認 |
SyntaxError | 文法エラー | 正しい文法か確認 |
ValueError | 引数が不適切 | 適切な引数を渡す |
エラーは初心者のつまずきポイントでもあり、成長のチャンスでもあります。
エラーは問題解決の手掛かりになります。恐れずに、エラーメッセージをよく読み効率的かつ適切に対処していきましょう。