【Python⑨】エラーの読み方の基本|止まらずに原因を探すために
ここまでで、Pythonの基本文法と、ファイルを読むという考え方を整理しました。ここから先は、実際にコードを書きながら少しずつ手を動かしていく段階に入ります。そのとき必ず出てくるのがエラーです。そこで今回は、エラーの読み方の基本を整理します。
エラーは避けるべき失敗というより、どこがうまくいっていないかを教えてくれる情報です。もちろん、最初に出会うと止まりやすいのですが、読み方の基本がわかるだけで、かなり対処しやすくなります。ここでは、エラーを怖がらずに原因を探すための見方を確認します。
この記事で整理すること
- エラーをどう捉えるか
- エラーメッセージのどこを見るか
- よく出るエラーの種類
- エラーが出たときに何を確認するか
目的は、エラーを一字一句理解することではありません。まずは、どこを見ればよいのか、何を疑えばよいのかを整理して、完全に手が止まる状態を減らすことです。
エラーは何を示しているのか
エラーは、Pythonが「このままでは処理を続けられない」と判断したときに出ます。つまり、エラーは単なる警告ではなく、処理が止まった理由を示すメッセージです。
重要なのは、エラーが出たこと自体を問題視しすぎないことです。コードを書いていれば、エラーは普通に出ます。大切なのは、エラーを見て「どこで」「何が」起きたのかを確認することです。
言い換えると、エラーは失敗の記録ではなく、修正のための手がかりです。この見方を持つだけでも、かなり冷静に対処しやすくなります。
エラーメッセージのどこを見るか
エラーメッセージには情報がいくつか含まれていますが、最初に全部を読む必要はありません。まず見るべきなのは、次の3点です。
- どの行で止まったか
- どの種類のエラーか
- 何が見つからない、あるいは何が合わないのか
たとえば、次のようなコードを考えます。
score = 80print(scor)
この場合、変数名を score ではなく scor と書いてしまっています。すると、Pythonは定義されていない名前を見つけたことになり、エラーを出します。
こういうときは、まず「どの行か」を確認し、そのあとでエラーの種類を見ます。行番号とエラー名だけでも、原因にかなり近づけます。
よく出るエラー1|SyntaxError
SyntaxError は、文法が崩れているときに出るエラーです。たとえば、コロンの書き忘れや、かっこの閉じ忘れなどで起こります。
score = 75 if score >= 60print("合格")
このコードでは、if 文の行の最後にコロンがありません。そのため、Pythonは文の形を正しく解釈できず、SyntaxError を出します。
このタイプのエラーでは、まず記号の抜けや余分な文字を疑う必要があります。特に、コロン、かっこ、クオーテーション、インデントのずれはよく確認するべきポイントです。
よく出るエラー2|NameError
NameError は、存在しない名前を使ったときに出るエラーです。変数名や関数名の打ち間違いでよく起こります。
message = "Hello"print(mesage)
このコードでは、message と書くべきところが mesage になっています。1文字足りないだけですが、Pythonにとっては別の名前です。そのため、定義されていない名前として扱われます。
このタイプのエラーでは、変数名や関数名のスペルを見直す必要があります。特に、似た名前を使っていると気づきにくいので、まずは文字を丁寧に見比べることが重要です。
よく出るエラー3|TypeError
TypeError は、型の組み合わせが合っていないときに出るエラーです。数値と文字列をそのまま計算しようとしたときなどによく起こります。
age = "20"print(age + 5)
このコードでは、age は文字列です。そのため、数値の 5 とそのまま足し算はできません。Pythonは、文字列と整数をどう処理すればよいか判断できず、TypeError を出します。
このタイプのエラーでは、まず値の型を疑う必要があります。「数値だと思っていたが、実際には文字列だった」ということはかなり多いです。必要に応じて type() で確認する習慣を持つと役立ちます。
よく出るエラー4|IndexError
IndexError は、リストなどで存在しない位置を指定したときに出るエラーです。
scores = [70, 82, 91]print(scores)
このコードでは、要素は3つしかありません。Pythonのリストは 0 から始まるので、有効な位置は 0、1、2 です。それにもかかわらず、その次の位置を指定しているため、IndexError が出ます。
このタイプのエラーでは、要素数と位置の対応を見直す必要があります。特に、0 から数えることを忘れると起こりやすいです。
よく出るエラー5|FileNotFoundError
FileNotFoundError は、指定したファイルが見つからないときに出るエラーです。ファイル名の間違いや、パスの指定ミスでよく起こります。
with open("data.txt", "r", encoding="utf-8") as file: text = file.read()
このコードで、data.txt がその場所に存在しなければ、Pythonはファイルを開けません。その結果、FileNotFoundError が出ます。
このタイプのエラーでは、コードそのものだけでなく、ファイルの場所や名前も確認する必要があります。ファイル操作では、内容よりも場所の指定で止まることが少なくありません。
エラーが出たときの確認手順
エラーが出たときは、毎回感覚で直そうとするより、確認の順番を決めておくほうが安定します。まずは次の順で見るのが基本です。
- どの行で止まったかを見る
- エラー名を見る
- 変数名、記号、型、場所のどれが怪しいかを考える
- 必要なら小さく試し直す
特に大事なのは、一度に大きく直しすぎないことです。原因を推測したら、1か所ずつ修正して確かめるほうが、何が効いたのかがわかりやすくなります。
エラーを読む力はなぜ大切か
データサイエンスでは、コードを書くだけでなく、途中で止まったときに修正できることが重要です。むしろ、実際には「最初から正しく書く」より「止まったときに直せる」ほうが大切な場面も多いです。
また、この先は pandas やファイル読み込みなど、少し複雑な処理も増えていきます。そうなると、エラーと付き合いながら進める力が必要になります。エラーを読めるようになることは、学習を続けるための基礎体力でもあります。
よくある混乱
ここでは、最初に混乱しやすい点を整理しておきます。
- エラーメッセージを最初から全部理解しようとする
- コード全体を一気に直そうとする
- エラー名を見ずに感覚で直そうとする
- コードだけを見て、ファイル名やパスを確認しない
特に多いのは、エラーが出た瞬間に「何もわからない」と感じてしまうことです。しかし実際には、行番号とエラー名だけでもかなり有力な手がかりになります。まずは全部を理解するのではなく、必要な部分を拾う姿勢が重要です。
今の段階で押さえるべきこと
現時点で必要なのは、すべてのエラーに即対応できるようになることではありません。まずは、エラーが出たときに「どの行か」「どの種類か」「何が怪しいか」を確認する流れを身につけることが重要です。
また、文法の崩れ、名前の打ち間違い、型の不一致、位置のずれ、ファイルの場所の間違いといった基本的な原因を意識できるようにしておく必要があります。ここが整理できるだけでも、かなり止まりにくくなります。
次に学ぶこと
ここまでで、エラーの読み方の基本を整理しました。次は、Jupyter Notebook の使い方を学びます。
Jupyter Notebook は、コードを少しずつ実行しながら確認できる環境です。エラーを確認して修正し、また動かすという流れとも相性がよいため、このタイミングで整理しておく価値があります。
まとめ
エラーは、Pythonが処理を止めた理由を示すメッセージです。大切なのは、エラーが出たこと自体よりも、そこから何を読み取るかです。
まずは、どの行で止まったか、どの種類のエラーか、何が怪しいかを見ることが基本になります。ここを押さえておけば、エラーが出ても完全に止まらず、原因を探しながら進めやすくなります。
)