かゆい所に手が届く解説

初心者が押さえておくべきPythonでよくあるエラーの原因とその対処法

初心者が押さえておくべきPythonでよくあるエラーの原因とその対処法

プログラミングの学習において、挫折する原因の多くはエラーが解決できないことだと言われます。

実際、僕自身も最初に学習したときにエラーが原因で一度やめてしまった経験があります。

そこで本記事では、Pythonでよくあるエラーの原因とその解決策を、初心者向けにわかりやすく解説します

エラーの対処法を知ることで、プログラミング学習をスムーズに進められるようになれば嬉しいです。

エラーの特定方法

エラーはよくあります。

その際、特定する方法を理解することが重要です。

エラーが起きると、その過程や理由が出力されます。

これを見ると嫌になることがありますが、どんなエラーもまずは最終行に注目してください。

これはあくまで例ですが、多くの場合は最終行のエラーの原因を探っていけば解決できます。

複数のエラーが原因の場合はその限りではありませんが、初心者が学習する過程において、一度にそれほど大量のエラーが出ることはないと思います。

ただし、TypeErrorIndexError の場合は最終行ではなく途中に表示されるのでこの限りではありません。

Pythonでよくあるエラーの一覧

よくあるエラーを一覧にしました。

まずは、概要として押さえておきましょう。

特に、Python3エンジニア認定基礎試験のような検定対策には必要な基礎知識となります。

次に、各エラーについて詳細を見ていきましょう。

各エラーの詳細

1. SyntaxError

コードの構文が間違っていたり、かっこやコロンの付け忘れなど、文法ミスが原因です。

最も多いエラーかと思います。

主な原因:

  • コードの構文が正しくない
  • コロン : の付け忘れ
  • クォートや括弧の閉じ忘れ
# 閉じかっこ忘れ
print("Hello, world"

# 関数や構文のコロン忘れ
def hello()
    print('test')

対応策

エディターなどツールにもよりますが、入力時点でエラーを知らせてくれる場合がほとんどです。

下の図は、コロンが必要な個所に赤い波線が表示されています。

初心者の頃はよくお世話になります。

2. NameError

未定義の変数を使用するとエラーになります。
定義したつもりでも、タイプミスの場合もあるので良く確認すれば見つけられます。

主な原因:

  • 変数が未定義のまま使用されている
  • 変数名のタイプミス
print(value)

対応策

  • 未定義の変数を定義する
value = 10
print(value)

3. TypeError

Type(型)に関する問題です。

主な原因:

  • 型の異なるデータを演算しようとした
  • 関数の引数の型が誤っている
print("Age: " + 25)

上記の例では、文字列と数値を結合使用しているためにエラーとなります。

対応策

  • str() で型を変換する
print("Age: " + str(25))

このように、「型変換」をする処理が一般的です。

4. IndexError

リストやタプルの範囲外のインデックスにアクセスしようとするとエラーになります。

主な原因:

  • リストやタプルの範囲外のインデックスにアクセスした
numbers = [1, 2, 3]
print(numbers[5])

対応策

  • インデックスが有効範囲内か確認
if len(numbers) > 5:
    print(numbers[5])
else:
    print("Index out of range")

上の例では、if文で条件を明示し、処理を分岐させています。

5. KeyError

辞書型(dict)で存在しないキーへアクセスするとエラーになります。

主な原因:

  • 辞書に存在しないキーを使用した
data = {"name": "Alice"}
print(data["age"])

対応策

  • get() を使って安全にアクセス
print(data.get("age", "Key not found"))

上の例では、”age” キーが存在しない場合、第二引数の “Key not found” を返す(デフォルト値を設定できる)ようにしています。

6. AttributeError

存在しないメソッドや属性の呼び出すことでエラーになります。

主な原因:

  • 存在しない属性やメソッドを呼び出した
numbers = [1, 2, 3]
numbers.append(4)  # ✅ append() はリストのメソッドなのでOK
numbers.push(5)  # ❌ push() はリストに存在しない

対応策

  • 正しくメソッドを使用

初心者のうちは、メソッドを誤って使ってしまうことは良くあります。

アトリビュートエラーが出た場合、エラー文をそのままウェブで検索すると解決策が出てきます。

そうやって、少しずつ覚えていくと良いでしょう。

私は今でも load() と read() を間違えます。

7. ValueError

不適切な値や変換できない値を使用するとエラーになります。

主な原因:

  • 不適切な値を関数に渡した
num = int("abc")

対応策として、後述する例外処理を使って処理するのが一般的です。

8. ZeroDivisionError

0で割ろうとするとエラーになります。

主な原因:

  • 0で除算しようとした
result = 10 / 0

対応策

  • ゼロ除算を回避
denominator = 0
if denominator != 0:
    result = 10 / denominator
else:
    print("Cannot divide by zero")

上の様に、条件分岐で処理を分けたり、例外処理を使って対応します。

9. FileNotFoundError

存在しないファイルを開こうとすると、エラーになります。

主な原因:

  • 存在しないファイルを開こうとした
with open("non_existent_file.txt", "r") as file:
    content = file.read()

こちらも例外処理を使って処理するのが一般的です。

詳しくは後述しています。

10. ModuleNotFoundError

インポートするモジュールがインストールされていなかったり、バージョンが古いことでエラーになります。

主な原因:

  • 存在しないモジュールをインポートしようとした
import non_existent_module

対応策

  • pip などコマンドを使ってモジュールをインストール
pip install required_module

インストールされているはずなのにエラーが出る、という場合は綴り(スペル)を確認しましょう。

エラーを効率的に解決する方法

あくまでプログラミング初学者向けの基本として記載しておきます。

エラーメッセージをそのまま検索

大半はこれで解決策がヒットしますが、Pythonのバージョンやライブラリの有無など環境によっても異なるため、エラーによっては解決できません。

  • Python NameError name 'value' is not defined

公式ドキュメントを活用

少し慣れてきたら、公式ドキュメントを見てみましょう。

最初は難しいかもしれませんが、慣れるとここで解決できることもあります。

  • https://docs.python.org/ja/3/

質問サイト(Stack Overflow, Qiita)を活用

最終的に、質問してみるのが一番早いです。

ただし、質問の仕方には気を付けましょう。

「○○のエラーはどうすればいいですか?」

のように、あいまいな表現やご自身の環境を明示していないと怒られます。

良い質問のためのポイント

質問をする際には、次の点を意識しましょう。

①エラーの詳細を明確に伝える

  • 「どんなエラーが発生したのか?」
  • 「エラーメッセージの全文は何か?」
  • 「いつ(どの処理で)エラーが起きたのか?」

明確にすることで、より回答しやすくなります。

②自分の環境を明示する

  • 使用しているPythonのバージョン(例:Python 3.10)
  • OSの種類(例:Windows 11 / macOS)
  • 使用ライブラリのバージョン(例:Flask 3.1.0, NumPy 1.24)

環境による違いは大きいので、OSやPythonのバージョンを明示するのは有効です。

③再現可能なコードを提供する

問題を引き起こす最小限のコード(MRE: Minimum Reproducible Example)を示すとイメージしやすいです。

def divide(a, b):
return a / b

print(divide(10, 0)) # ZeroDivisionError 発生

「このコードを実行すると ZeroDivisionError が発生します。どのように修正すればよいでしょうか?」


と具体的に質問したり、自分で試したことを伝えるのも効果的です。

また、このエラーに対してどんな解決策を試したのか?(例:「try-except を試しましたが、エラーが出続けます」)どこで調べたのか?(例:「公式ドキュメントを読んだが解決しなかった」)を付け加えると、新たな選択肢を提示してもらえることが多いです。

デバッグの基本テクニック

エラーが解決できないときだけではなく、普段からデバッグ用のprint文を仕込んでおくのが良いです。

また、try/exceptで例外処理をするのは基本です。

  • print() で変数の中身を確認
  • try-except を活用

例外処理については、こちらの記事で詳しく解説しています。

生成AIで質問する

最近では、これが一般的になってきたと思います。

ChatGPT、Gemini、Copilot、Claude、どれを使ってもOKです。

このとき、上記の質問サイトを利用する場合と同じように、状況や環境を詳細に伝えることで精度の高い回答を得ることができます。

ただし、「初学者の方は極力最初は自分で調べたり考えるようにしてほしい」と思います。

エラーの解決って、本当に勉強になります。

簡単に解決してしまうと、また同じようなエラーが出ても自分で解決できないままです。

最終的に、どうしても分からなければ聞く!というのがお勧めです。

まとめ

最後に、エラー処理についてまとめましょう。

✅ エラーメッセージを正しく読むことが大事
✅ 最終行のエラーの種類+発生箇所を確認する
✅ よくあるエラーの対処法を知っておくとスムーズに学習できる

💡 「エラーが怖くなくなった!」「もっと学習を進めたい!」と感じたら、Pythonの演習を増やして経験を積みましょう。

Pythonの演習はこちら ▶

今後も初心者向けにプログラミングの情報をお届けします。

以下のメルマガにご登録頂くと、不定期に配信をお届けします。

ぜひ購読してください!

それでは、ステキなPythonライフを!

ABOUT ME
やまちゃん
これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。 ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。 Pythonを用いたアプリ開発、ウェブアプリケーションの開発で業務の効率化をサポートしています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です