Pythonのエラーと例外とは?初心者がよく出会うエラーとその対処法
生徒
「Pythonってどんなときにエラーが出るんですか?」
先生
「エラーは、プログラムの書き方が間違っていたり、実行中に問題が起きたときに出ますよ。」
生徒
「エラーって怖い感じがして苦手なんですけど、大丈夫ですか?」
先生
「大丈夫。どんなエラーがあるのかを知っておけば、落ち着いて対処できます。一緒に学んでいきましょう!」
1. エラーと例外の違いとは?
Pythonでは「エラー」と呼ばれるものに大きく分けて2種類あります。ひとつは文法エラー(構文エラー)、もうひとつは例外(実行時エラー)です。
文法エラーは、Pythonのルールに従っていないコードを書いたときに発生します。例えば、if文の後にコロン(:)を忘れたり、インデントを正しく揃えていなかったりすると出ます。プログラムは文法エラーがあると実行されません。
例外は、プログラムの実行中に思わぬ問題が起きたときに発生します。たとえば、0で割ろうとしたり、存在しないファイルを開こうとしたりするとエラーが出ます。例外は、コードの書き方自体は正しい場合でも、実行時の状況によって発生するので、予期しない動作を防ぐために知っておくことが重要です。
簡単な例を挙げると、次のコードは文法エラーになります。
if True
print("こんにちは")
コロンが抜けているため、Pythonはここで止まってしまいます。一方、次のコードは例外の例です。
print(10 / 0)
この場合、文法は正しいですが、0で割っているため実行時にエラー(ZeroDivisionError)が発生します。初心者はまず、文法エラーと例外の違いを理解して、どちらのケースでも冷静に対処できるように意識することが大切です。
2. よくある文法エラーの例
文法エラーは、Pythonがコードを読んで「これでは実行できないよ」と止まってしまう状態です。初心者の方がよく遭遇するエラーの一つで、ちょっとした書き間違いでもプログラムは動きません。たとえば次のようなコードです。
if True
print("こんにちは")
このコードでは、if文のあとにコロン(:)がないため、PythonはSyntaxErrorを返します。コロンを忘れるだけで処理が止まるので、初心者は特に注意が必要です。また、インデント(字下げ)が正しくない場合も文法エラーになります。
正しく書くと次のようになります。こうした小さなミスを理解して修正することが、Pythonをスムーズに学ぶ第一歩です。
if True:
print("こんにちは")
3. よくある例外(実行時エラー)の例
例外とは、プログラムの実行中に予期しない問題が発生したときに起こるエラーのことです。初めてプログラミングを学ぶ方でも理解しやすいように、よく見かける例を具体的なサンプル付きで紹介します。これを知っておくと、エラーが出たときに原因を素早く見つけやすくなります。
ZeroDivisionError(ゼロ除算エラー)
0で割り算をしようとしたときに発生するエラーです。数学でも0で割ることはできないので、Pythonでも同じようにエラーになります。
print(10 / 0)
例えば上記のコードを実行すると「ZeroDivisionError: division by zero」というエラーが出ます。これは「0で割ろうとした」という意味です。
NameError(名前エラー)
まだ定義していない変数や関数を使おうとしたときに出るエラーです。プログラムがどの変数のことか分からないために発生します。
print(apple)
この場合、「apple」という変数を事前に作っていないのでエラーになります。変数名のスペルミスでも同じエラーが出ます。
TypeError(型エラー)
異なる種類のデータを不適切に組み合わせようとしたときに起こるエラーです。例えば文字列と数字をそのまま足そうとするとエラーになります。
print("年齢は" + 20)
上記のコードでは文字列と整数を足しているため「TypeError」が発生します。解決するには、整数を文字列に変換するなど、型を揃える必要があります。型の違いに注意することで、プログラムの動作を正しく制御できます。
4. エラーの内容をよく読もう
Pythonでは、エラーが出るとその原因を教えてくれるメッセージが表示されます。このメッセージを読めば、どこで何が問題だったのかがわかります。
たとえば、次のように表示されることがあります。
Traceback (most recent call last):
File "main.py", line 1, in <module>
print(10 / 0)
ZeroDivisionError: division by zero
これは「1行目で 0 で割ってるよ」という意味です。
5. エラーを見つけたらどうすればいい?
エラーが出たら、まずは落ち着いて、どのエラーかを確認しましょう。そして、エラーの種類に応じて次のように対処します。
- SyntaxError → コロンや記号の抜け、インデントを見直す
- NameError → 変数のスペルや定義漏れを確認する
- TypeError → 数値と文字列など、型の違いをチェックする
- ZeroDivisionError → 0で割っていないか確認する
エラーメッセージをそのままGoogle検索すると、解決方法がたくさん見つかりますよ。
6. はじめのうちはエラーは出て当然!
初心者のうちは、エラーが出るのは当たり前です。むしろエラーが出るたびに、「お、今学べるチャンスだ」と思ってください。
実際、エンジニアでも毎日エラーと向き合っています。大事なのは「どう直すかを考える力」です。
7. エラーを自分で試してみよう
最後に、自分でいろんなエラーをわざと出してみて、どんな表示になるのかを確認してみましょう。エラーの種類とメッセージを見て慣れていくと、少しずつ怖くなくなりますよ。
そして、エラーの英語メッセージも「なにが起こったか」を説明しているので、辞書などで少しずつ意味を知っていくと役立ちます。