- はじめに
- 1. プログラミングのエラーとは?
- 2. プログラミングのエラーは大きく3種類
- プログラムで発生する3種類の問題
- 3. SyntaxErrorとは?文法エラー
- 4. IndentationErrorとは?インデントのエラー
- 5. NameErrorとは?変数名の間違い
- 6. TypeErrorとは?データ型のエラー
- 7. ValueErrorとは?値が適切でない場合のエラー
- 8. IndexErrorとは?リストの範囲外を指定したエラー
- リストのインデックス
- 9. KeyErrorとは?辞書に存在しないキーを指定したエラー
- 10. ZeroDivisionErrorとは?0で割ったときのエラー
- 11. Pythonのエラーメッセージの読み方
- エラーメッセージの確認ポイント
- 12. Pythonでよくあるエラー一覧
- 13. エラーが発生したときの解決方法
- エラー解決の5ステップ
- 14. try・exceptでエラーに対応する
- 15. 練習問題:エラーの原因を考えてみよう
- 問題1:変数名の間違い
- 問題2:リストの範囲外
- 問題3:文字列と数値
- 16. まとめ
はじめに
プログラミングを勉強していると、必ずといってよいほど遭遇するのが「エラー」です。
「プログラムを書いたのに動かない」「英語のエラーメッセージが表示された」「どこを修正すればよいのか分からない」と困った経験はありませんか?
エラーとは、プログラムの文法に問題があったり、実行中に処理できない状況が発生したりすることです。また、エラーが表示されず、間違った計算結果になる場合もあります。
この記事では、高校の情報Ⅰを学んでいる人やPython初心者に向けて、プログラミングのエラーの種類、よくある原因、エラーメッセージの読み方、解決方法をサンプルコード付きで解説します。
1. プログラミングのエラーとは?
プログラミングのエラーとは、プログラムの記述や実行に問題があり、正常に処理できない状態のことです。
例えば、次のPythonプログラムを見てみましょう。
print("こんにちは"
このプログラムでは、最後の閉じかっこ ) が抜けています。
そのため、実行すると次のようなエラーが発生します。
SyntaxError: '(' was never closed
これは、Pythonの文法が正しくないために発生するエラーです。
一方、次のプログラムはどうでしょうか。
price = 100quantity = 3total = price + quantityprint(total)
実行結果:
103
プログラムは正常に実行できますが、商品の合計金額を求めたいのであれば、正しい結果は300です。
このように、エラーメッセージが表示されなくても、プログラムが意図した結果にならない場合があります。
2. プログラミングのエラーは大きく3種類
初心者向けには、プログラミングの問題を大きく3種類に分けると理解しやすくなります。
プログラムで発生する3種類の問題
文法エラー
プログラムの書き方が間違っている
例:かっこの閉じ忘れ、コロンの付け忘れ
実行時エラー
プログラムの実行中に問題が発生する
例:0で割る、存在しない変数を参照する
論理エラー
動作はするが、計算結果や処理内容が間違っている
例:掛け算すべきところを足し算している
厳密には、論理エラーはPythonが検出して例外を出すものではありません。しかし、プログラミングを学習するうえでは、実行結果が正しいかどうかを確認することも重要です。
3. SyntaxErrorとは?文法エラー
SyntaxError は、Pythonの文法に問題がある場合に発生するエラーです。
例えば、条件分岐のif文では、条件の最後にコロン : が必要です。
score = 80if score >= 60 print("合格")
このプログラムでは、コロンが抜けているため、SyntaxError が発生します。
正しくは次のように記述します。
score = 80if score >= 60: print("合格")
文法エラーが発生した場合は、かっこ、引用符、コロンなどの記号が正しく記述されているかを確認しましょう。
4. IndentationErrorとは?インデントのエラー
Pythonでは、処理のまとまりを表すためにインデント(字下げ)を使用します。
例えば、次のコードには問題があります。
score = 80if score >= 60:print("合格")
if文の中で実行する print() が字下げされていないため、IndentationError が発生します。
正しくは次のように書きます。
score = 80if score >= 60: print("合格")
Pythonでは通常、半角スペース4つを使ってインデントします。
スペースとタブを混在させるとエラーの原因になる場合もあるため、書き方を統一しましょう。
5. NameErrorとは?変数名の間違い
NameError は、定義されていない変数名などを使用したときに発生するエラーです。
例えば、次のプログラムを見てください。
score = 80print(socre)
変数を定義するときは score と書いているのに、表示するときは socre と書いています。
この場合、次のようなエラーが発生します。
NameError: name 'socre' is not defined
正しくは次のように記述します。
score = 80print(score)
変数名や関数名のスペルミスは、初心者が遭遇しやすいエラーの一つです。
また、Pythonでは大文字と小文字も区別されます。score と Score は別の名前として扱われるので注意しましょう。
6. TypeErrorとは?データ型のエラー
TypeError は、対応していないデータ型同士の演算などを行った場合に発生します。
例えば、次のコードです。
age = 16print("年齢は" + age)
文字列と整数をそのまま + で結合しようとしているため、エラーになります。
この場合は、整数を文字列へ変換しましょう。
age = 16print("年齢は" + str(age))
実行結果:
年齢は16
また、f文字列を使う方法もあります。
age = 16print(f"年齢は{age}")
文字列と数値は異なるデータ型であることを理解しておくと、このようなエラーを防ぎやすくなります。
7. ValueErrorとは?値が適切でない場合のエラー
ValueError は、データ型は適切でも、その値が処理に適していない場合などに発生します。
例えば、文字列を整数へ変換するときです。
age = int("abc")
"abc" は整数として解釈できないため、次のエラーが発生します。
ValueError: invalid literal for int() with base 10: 'abc'
正しく数値を渡せば、正常に実行できます。
age = int("16")print(age)
実行結果:
16
ユーザーが入力した値を数値に変換するときは、数字以外の文字が含まれていないか確認することが大切です。
8. IndexErrorとは?リストの範囲外を指定したエラー
IndexError は、リストなどで存在しない位置を指定した場合に発生します。
例えば、次のリストを見てみましょう。
fruits = ["りんご", "みかん", "バナナ"]print(fruits[3])
Pythonのリストでは、インデックスは0から始まります。
リストのインデックス
インデックス 0
りんご
インデックス 1
みかん
インデックス 2
バナナ
fruits[3] は存在しないため、エラーになります。
実行すると、次のようなエラーが発生します。
IndexError: list index out of range
正しくは、0から2までのインデックスを指定します。
print(fruits[2])
実行結果:
バナナ
また、len() を使用すると、リストに何個のデータがあるかを確認できます。
9. KeyErrorとは?辞書に存在しないキーを指定したエラー
辞書で存在しないキーを指定すると、KeyError が発生します。
student = { "name": "山田", "age": 16}print(student["score"])
この辞書には score というキーが存在しません。
実行すると、次のようなエラーになります。
KeyError: 'score'
キーが存在するか分からない場合は、get() を使用すると便利です。
print(student.get("score", 0))
実行結果:
0
get() の2番目の引数には、キーが存在しなかった場合の初期値を指定できます。
10. ZeroDivisionErrorとは?0で割ったときのエラー
ZeroDivisionError は、数値を0で割ろうとした場合に発生します。
number = 100result = number / 0print(result)
実行すると、次のエラーになります。
ZeroDivisionError: division by zero
変数を使って割り算をする場合も、割る数が0ではないか確認する必要があります。
number = 100divisor = 0if divisor != 0: print(number / divisor)else: print("0では割れません")
実行結果:
0では割れません
このように、条件分岐を使うことで、エラーが発生する状況を事前に確認できます。
11. Pythonのエラーメッセージの読み方
Pythonでは、エラーが発生すると Traceback と呼ばれる情報が表示されます。
例えば、次のプログラムです。
numbers = [10, 20, 30]print(numbers[5])
実行すると、次のようなエラーが表示されます。
Traceback (most recent call last):
File "main.py", line 3, in <module>
print(numbers[5])
~~~~~~~^^^
IndexError: list index out of range
エラーメッセージには、原因を調べるための重要な情報が含まれています。
エラーメッセージの確認ポイント
① ファイル名
File "main.py"
どのファイルで問題が発生したかを示します。
② 行番号
line 3
エラーが発生した行の番号です。
③ エラーの種類と内容
IndexError: list index out of range
エラーの名前と、何が問題なのかを説明しています。
エラーが発生したら、まずエラーメッセージの最後に表示されるエラー名と説明を確認しましょう。
なお、Pythonのバージョンや実行環境によって、メッセージの詳細や表示形式が異なる場合があります。
12. Pythonでよくあるエラー一覧
ここまで紹介したエラーを整理しましょう。
| エラー名 | 主な原因 |
|---|---|
| SyntaxError | プログラムの文法が間違っている |
| IndentationError | インデントが正しくない |
| NameError | 定義されていない名前を使用した |
| TypeError | 対応していないデータ型の演算など |
| ValueError | 処理に適していない値を渡した |
| IndexError | リストなどの範囲外を指定した |
| KeyError | 辞書に存在しないキーを指定した |
| ZeroDivisionError | 0で割ろうとした |
最初からすべてのエラー名を暗記する必要はありません。実際に遭遇したときに、原因と解決方法を一つずつ覚えていきましょう。
13. エラーが発生したときの解決方法
エラーが発生したときは、次の順番で確認すると原因を見つけやすくなります。
エラー解決の5ステップ
- エラーメッセージを読むエラー名と説明文を確認します。英語が分からない場合は翻訳して意味を調べましょう。
- エラーが発生した行を確認する表示されたファイル名と行番号を確認し、該当するコードを調べます。
- 変数やデータの内容を確認する
print()などを使って、変数にどのような値が入っているか確認します。 - 原因と思われる部分を修正する一度に多くの場所を変更せず、原因を切り分けながら修正します。
- もう一度実行して結果を確認するエラーが消えただけでなく、意図した結果になっているかも確認しましょう。
このように、プログラムの問題を調べて修正する作業を「デバッグ」といいます。
14. try・exceptでエラーに対応する
Pythonでは、実行中にエラーが発生する可能性のある処理に対して、try と except を使用できます。
例えば、ユーザーから数値を入力してもらうプログラムを考えてみましょう。
try: age = int(input("年齢を入力してください:")) print(f"{age}歳ですね")except ValueError: print("数字を入力してください")
数字を入力した場合は、その年齢が表示されます。
一方、abc など、整数に変換できない文字を入力すると、次のように表示されます。
数字を入力してください
try の中で ValueError が発生した場合に、except ValueError の処理が実行されます。
ただし、すべてのエラーを無条件に無視すると、原因が分かりにくくなる場合があります。必要なエラーを適切に処理することが大切です。
15. 練習問題:エラーの原因を考えてみよう
次の3つのプログラムには、それぞれエラーがあります。どこが間違っているのか考えてから、解答を確認してみましょう。
問題1:変数名の間違い
次のプログラムで発生するエラーは何でしょうか?
name = “山田” print(neme)
解答を見る
問題2:リストの範囲外
次のプログラムで発生するエラーは何でしょうか?
numbers = [10, 20, 30] print(numbers[3])
解答を見る
問題3:文字列と数値
次のプログラムで発生するエラーは何でしょうか?
age = 16 print(“年齢:” + age)
解答を見る
16. まとめ
プログラミングのエラーには、文法エラー、実行時エラー、論理エラーなどがあります。
Pythonでは、SyntaxError、NameError、TypeError など、原因を示すエラーメッセージが表示されます。
重要なのは、エラー名をすべて暗記することではなく、エラーメッセージを読み、問題が発生した場所と原因を調べる習慣を身につけることです。
また、プログラムが正常に実行できても、計算結果や処理内容が正しいとは限りません。自分が期待した結果と実際の結果を比較することも大切です。
次は「デバッグとは?」を学び、プログラムの問題を効率的に発見・修正する方法を理解しましょう。

