Pythonを学び始めると、コードが動かない場面に何度も出会います。
でも、エラーは失敗ではなく「どこを見直せばよいか」を教えてくれるヒントです。
この記事では、初心者が特につまずきやすいエラーの種類と、落ち着いて直すための考え方をやさしく整理します。
この記事でわかること
完成コード(まず見てみよう)
file_name = "memo.txt"
print("確認するファイル:", file_name)
numbers = [10, 20, 30]
total = sum(numbers)
print("合計:", total)
print("平均:", total / len(numbers))コードの実行結果は次の通りです。
確認するファイル: memo.txt
合計: 60
平均: 20.0このコードはそのまま実行できます。
まずは「正しく動く形」を見ておくと、あとでエラー例を見たときに、何が違うのか比較しやすくなります。
テーマの説明(やさしく)
Pythonのエラーは、「文法がまちがっている」「名前が見つからない」「型が合わない」など、原因ごとに種類があります。
難しそうに見えますが、最初は全部を覚えなくて大丈夫です。
大切なのは、エラーが出たら次の順番で確認することです。
- エラー名を見る
- どの行で起きたかを見る
- 直前で書いたコードを見直す
たとえば SyntaxError は「書き方のルールがまちがっています」という意味です。NameError は「その名前はまだ使えません」という意味です。
このように、エラー名は原因の方向を教えてくれます。
また、初心者のうちは、自分のコードだけでなくファイル名や保存場所のまちがいでも止まりやすいです。
コードの内容だけでなく、「実行しているファイルは合っているか」も一緒に確認するのがコツです。
具体例・補足説明
まずは文法のミスです。
次のように if の行の最後のコロン : を忘れると、SyntaxError になります。
score = 80
if score >= 60
print("合格です")この場合は、まずエラーが出た行を見て、if score >= 60: のようにコロンを足します。
かっこやクォートの閉じ忘れでも、同じように文法エラーになります。
次はインデントのミスです。
for i in range(3):
print(i)for や if の下の処理は、少し右へ下げて書く必要があります。
これがそろっていないと、IndentationError になります。
正しい形は次の通りです。
for i in range(3):
print(i)次は NameError です。
変数名のつづりをまちがえたときによく起こります。
price = 120
print(prcie)この例では、price と書いたつもりが prcie になっています。
エラーが出たら、同じ名前を別の場所でどう書いているか見比べると見つけやすいです。
TypeError は、データの種類が合わないときに出やすいエラーです。
age = "20"
message = "年齢は" + age + 1
print(message)このコードでは、文字列と数字をそのままつなげようとしているためエラーになります。
直すなら、数字を文字に変えるか、最初から数値として扱うようにします。
age = 20
message = "年齢は" + str(age + 1)
print(message)ファイル名やパス指定のミスにも注意が必要です。
たとえば report.txt を開きたいのに、実際には reports.txt と書いてしまうと、ファイルが見つからないエラーになります。
このときはコードだけでなく、ファイル名のつづり、保存場所、今開いているフォルダを確認します。
特に初心者のうちは、sample.py を直しているつもりで、別の sample.py を実行していることもあります。
「直したのに変わらない」と感じたら、実行中のファイル名と保存場所を見直してみてください。
おじちくワンポイント
エラーが出ると急いで全部を書き直したくなりますが、まずは最後に直した1か所だけを見るほうが早く解決しやすいです。
初心者のエラーは、広い範囲よりも「直前の1文字」「変数名の1文字違い」で起きていることが多いです。
よくある勘違い・注意点
練習問題
問題1
次のコードのまちがいを直してください。NameError にならない形にして、合計を表示してみてください。
total = 500
print(totel)問題2
次のコードを直して、1 から 3 まで表示してください。コロンとインデントの両方を確認してみてください。
for number in range(1, 4)
print(number)