Pythonのエラーメッセージの読み方!よくあるエラーと解決方法
生徒
「Pythonでプログラムを書いてたら、赤い文字のエラーが出て止まってしまいました…。何が悪いのか全然わかりません。」
先生
「Pythonでは、エラーが起きると“エラーメッセージ”が表示されます。それを読めば、どこが間違っているのかヒントがわかりますよ。」
生徒
「でも英語ばかりで難しいです…。初心者でも読めるようになりますか?」
先生
「大丈夫。今回は、Pythonのエラーメッセージの読み方や、よくあるエラーとその解決方法をわかりやすく解説していきます!」
1. Pythonのエラーとは?初心者が知っておくべき基本
Pythonでプログラムを書くとき、間違った文法や実行できない処理があると、プログラムは止まって「エラーメッセージ」を表示します。
エラーは、プログラミングではごく普通のことで、間違いではありません。むしろ、エラーを見て「どこがダメだったか」を理解することが成長につながります。
Pythonのエラーメッセージは、原因・行番号・エラーの種類が表示されるようになっています。
2. エラーメッセージの基本構造を見てみよう
まずは、Pythonでエラーが出たときの典型的な表示を見てみましょう。
print("こんにちは"
File "main.py", line 1
print("こんにちは"
^
SyntaxError: unexpected EOF while parsing
この例では、「括弧の閉じ忘れ」によるSyntaxError(構文エラー)が起きています。どのファイルの何行目でエラーが発生したかもわかります。
3. よくあるエラー1:SyntaxError(構文エラー)
SyntaxErrorは、Pythonの文法ルールを守っていないときに表示されます。
- 括弧の閉じ忘れ
- コロン(:)の付け忘れ
- インデント(字下げ)が間違っている
if True
print("OK")
SyntaxError: expected ':'
このように、ifのあとにコロンが必要なのに抜けていると、構文エラーになります。
4. よくあるエラー2:NameError(変数が未定義)
NameErrorは、使おうとした変数や関数がまだ定義されていないときに出ます。
print(message)
NameError: name 'message' is not defined
この場合は、messageという変数が事前に定義されていないので、エラーになります。
先に変数を作ってから使うようにしましょう。
5. よくあるエラー3:TypeError(型が合わない)
TypeErrorは、異なる型のデータを無理に組み合わせたときに出るエラーです。
age = 20
print("年齢は" + age)
TypeError: can only concatenate str (not "int") to str
この場合、文字列と数値を直接つなごうとしてエラーになっています。解決方法は、数値をstr()で文字列に変換することです。
print("年齢は" + str(age))
6. よくあるエラー4:IndentationError(インデントの間違い)
Pythonでは、インデント(字下げ)がとても大事です。ifやforの中は、必ずスペースやタブで字下げする必要があります。
if True:
print("Hello")
IndentationError: expected an indented block
このように、インデントがないとエラーになります。行頭にスペースを入れて整えましょう。
7. よくあるエラー5:ValueError(値が不正)
ValueErrorは、正しい型だけど、不正な値を使ったときに出るエラーです。
num = int("abc")
ValueError: invalid literal for int() with base 10: 'abc'
文字列の"abc"は数字ではないので、int()で整数に変換できずにエラーになります。
8. エラーメッセージを読み解くコツと習慣
Pythonのエラーに慣れるためには、次のような習慣が大切です。
- 何行目でエラーが出たかを見る
- エラーの種類を覚える(SyntaxError、NameErrorなど)
- Googleでエラー全文を検索するのも効果的
最初は難しく感じますが、エラーは「バグ」ではなく「アドバイス」と考えて読み解いていきましょう。
まとめ
Pythonでプログラムを書いていると、必ずといってよいほど遭遇するのがエラーメッセージです。これらのエラーは初めて見ると驚いてしまうものですが、その内容には「どこで」「なにが」「どのように」間違っているのかを示す重要な情報が込められています。エラーの種類、メッセージに含まれるキーワード、行番号、該当するコードの位置などを丁寧に読み取っていくことで、プログラムの問題点を正確に把握し、改善に向けての道筋を立てられます。とくにPythonでは構文エラー・未定義変数・型の不一致・インデントの崩れ・不正な値など、初心者から上級者まで多くの人がつまずくポイントが存在するため、それぞれのエラーの性質と解決方法を理解しておくことが非常に重要です。 また、エラーメッセージは単なる警告ではなく、Pythonが示す「修正のヒント」でもあります。SyntaxError なら文法の間違い、NameError なら変数の未定義、TypeError ならデータ型の不一致、IndentationError はインデントのミスなど、エラー名そのものが原因への手がかりになります。プログラムを修正するときは、まずエラー名を確認し、その後に行番号や表示されたコード部分をチェックすると理解しやすくなります。Pythonが丁寧に教えてくれるメッセージをしっかり読み取ることで、自分でエラーを解決する力が自然と身についていきます。 エラーを恐れず、むしろ積極的に読み解いていく姿勢が成長につながります。エラーメッセージを読み取る習慣がつくと、プログラムの品質が上がるだけでなく、デバッグのスピードも向上します。とくに、コードのどこが問題なのかを正確に特定できるようになると、今後より大規模なプログラムを作る際にも役立ちます。また、複数のエラーメッセージが表示されることもありますが、一つ一つ丁寧に確認していくことで必ず改善できます。 Pythonのエラーメッセージを正しく理解し、迅速に問題を修正できる力は、プログラミングを継続して学習するうえで欠かせないスキルです。エラーに慣れるためには、実際に誤りを含むコードを試し、意図的にエラーを発生させて、その内容を読み解く練習も効果的です。正しいコードと間違っているコードを比較しながら理解を深めれば、エラーメッセージから読み取れる情報がより明確になり、バグ修正がぐっと楽になります。
サンプルプログラム(まとめ用のエラー練習コード)
以下は、よくあるエラーを意図的に発生させ、修正しながら理解を深めるための練習コードです。
# 1. SyntaxError の例(修正版)
# if True
# print("OK")
if True:
print("OK")
# 2. NameError の例(修正版)
# print(message)
message = "こんにちは"
print(message)
# 3. TypeError の例(修正版)
# age = 20
# print("年齢は" + age)
age = 20
print("年齢は" + str(age))
# 4. IndentationError の例(修正版)
# if True:
# print("Hello")
if True:
print("Hello")
# 5. ValueError の例(修正版)
# num = int("abc")
num = int("123")
print(num)
それぞれのエラーがどのように発生し、どのように修正すれば正しく動作するのかを理解することで、Python全体の構文やルールが自然と身につきます。初心者のうちは特に、間違いが起きても慌てずに、エラーの種類・行番号・原因を落ち着いて読み解く習慣をつけると良いでしょう。
生徒
「Pythonのエラーメッセージって怖かったんですが、意味を知るとすごく役に立つものなんですね。」
先生
「そうですよ。エラーメッセージを正しく読めるようになると、プログラムの修正がとても早くなります。どこで何が起きているかを教えてくれる大切な情報です。」
生徒
「SyntaxError とか NameError とか、種類によって原因が違うってこともよく分かりました。これからは行番号もきちんと見てみます!」
先生
「その調子です。行番号を読み、該当箇所のコードを確認し、エラー名で原因を推測する。この流れが身につけば、デバッグが格段に楽になりますよ。」
生徒
「エラーを怖がらないようにして、わからなかったら検索する習慣もつけていこうと思います。」
先生
「ええ、とても良い心構えです。エラーは成長のヒントですから、落ち着いて読み解いていけば、どんな問題でも乗り越えられますよ。」