Pythonの書き方

Pythonのよくあるエラーの種類と対処法を解説!

python-error

こんにちは!中川です!

Pythonでプログラムを書いていると、エラーになったことがありませんか?

 

慣れてくると、そのエラーがどんなエラーかが分かるようになるのですが、

はじめのころはエラー内容も分からず、つまずき気味です。

 

今回は、エラーの種類とその対処方法を説明します。

 

エラーには、そのエラー内容と実際に誤りが異なる時があります

この時が一番つまずきやすいので、そこを重点的に説明します。

エラーの種類

エラーは主に以下の4つです。

  • SyntaxError: 構文エラー
  • IndentationError: 字下げエラー
  • NameError: 名前エラー
  • TypeError: 型変換エラー
  • UnboundedLocalError: 未定義の変数の利用によるエラー

エラー画面の見方

エラーはこのような画面になります。

python-error9

①はエラーが発生している行となります。

これは確実にこの行で発生しているというものではないので、注意しましょう。

その行あたりで発生していると思った方が良いです。

 

②はエラーの種類です。この後一つずつ解説していきますが、

これで大まかに原因が分かります

 

③はエラーの詳細です。

内容は英語で表示されます。ここを見ると発生しているエラー原因が詳しく分かります

この場合、「名前’apple’という変数は定義されてないよ」という意味です。

 

では、エラーの種類を1つずつ見ていきましょう。

SyntaxError: 構文エラー

例えば次のように打ってみます。

結果:

このように出力され、SyntaxErrorです。

これは変数の頭文字に数字を用いているからです。

変数の頭文字はアルファベットかアンダーバー(_)でないといけません。

 

また、変数名を予約語(printなど)にすることもできません。同じくエラーとなります。

その他、変数のスペルを打ち間違えているときも発生する可能性があります。

 

このエラーが発生する時は、スペルの間違いがないか?も確認した方が良いです。

正しくは、

このように数字を変数に含めたけれは頭文字以外の位置にしなければなりません

IndentationError: 字下げエラー

例えば次のように打ってみます。

結果:

これはif文の後にインデント(字下げ)がされていないからエラーとなっています。

正しくは、

このように、if文はインデント(字下げ)しなければなりません。

NameError: 名前エラー

名前エラーは次のような場合に発生します。

これを実行すると、

このように、「apple」は定義されてないですよ。と表示されます。

 

1行目で「blockには0が入る」と記述しているのに対し、

突然「apple」という変数が出てきて、それに何の数が入るのか、文字列が入るのかもわかりませんので、

“not defined”(未定義)と表示されるのです。

正しくは、

としなければ動きません。

TypeError:型変換エラー

型変換エラーは誤った型を使用すると発生します。

例を次に示します。

この結果は、

このエラーの原因は、「a=0」は整数型で「b=”hello”」は文字列型の、

2つの異なる型を足し合わせているため、このような結果になるのです。

足したい場合は、

1行目をstr( )で囲い、文字列型に変換しなければなりません。

 

また、型を知りたいときはtype関数を使うと良いです。

タイプ関数について詳しくはこちら。

python-type
Pythonの型について理解することはとても大切ですこんにちは!中川です! Pythonには型というものがあります。 例えば、1という字。これは人間から見たら数字ですが、文字と...

型を見てみます。

このようにすると、aとbがどのような型になっているか分かります。

aが整数型(int)で、bが文字列型(str)であることが分かりますね。

 

2つの異なる型は足すことができません。

型の覚え方

整数型はintです。これは「イント」または、「インテジャー」と読みます。

由来は英語の整数という意味から「integer」です。

 

文字列型はstrです。これは「ストリング」とそのまま読むか、「スター」と読んだりします。

由来は英語の文字列という意味から「string」です。

 

Pythonはほぼ英語なので、英単語を覚えていく感覚で型の名前も覚えていくと良いと思います。

UnboundedLocalError: 未定義の変数の利用によるエラー

これは関数利用時に発生するエラーです。

例えば、

このように打つとエラーとなります。

これは関数内で、ローカル変数かグローバル変数か分からないものに1を足しているからです。

正しくは、

3行目に「global a」とaはグローバル変数だという事を書いてあげる必要があります

関数についてはこちらの記事に詳しく書いています。

Pythonの関数(def)の書き方と使い方こんにちは!中川です! 今回は関数について解説します。 関数とは? 関数とは、簡単にいうと「処理をまとめたもの」です。 ...

その他のエラー

その他によくあるエラーが、Index Errorです。

Index Error:out of rangeによるエラー

これはリストでよく発生します。

リストについてはこちらの記事に詳しく書いています。

python-list
Pythonのlist(配列)の書き方、追加・削除も解説こんにちは!中川です! リストについて解説します! 例えば、たくさんの変数を扱いたい時にすべての変数に対して何かの...

例えば、

このようにすると、

エラーは発生します。

これは、aというリストは要素が2つまでしかないのに対し、print関数で3つ目の要素を見ようとしてるからです。

もちろん3つ目は存在しないので、list index out of range」(リストの範囲外だよ)と表示されるのです。

if文で何も記述していない時のエラー

これも見逃しがちなエラーです。

if文についてはこちらの記事に詳しく書いています。

python-if
Pythonのif、else、elif文の書き方こんにちは!中川です! 今回は、条件分岐に使用するif文について解説します。 書き方 If文は次のように書きます。 ...

例えばこのように打つと、

で、「IndentationError: expected an indented block」と表示されます。

これは、if文の中に何も処理を書いていないから発生するものです

もし、if文を書いて何も動作させたくなければpassを入れなければなりません。

これは、エラー箇所も誤って指定されるので見つけにくミスです。

まとめ

どうでしょうか?

Python初心者の方は意外とエラーでつまづきがちがと思います。

 

エラーが発生している行の書き方、前後の行をもう一度確認してみましょう。

また、Atomの文字補完機能(予測入力)を使うことで、スペルミスが減ります

プログラムを打つ効率も上がるので、ガンガン使っていきましょう!

 

今回はエラー対処でしたが、エラー箇所を監視しそれに対して動作させることもできます

例外処理というものです。詳しくはこちらに書いています。

python-try
Pythonのtryとexceptの使い方、例外処理の方法こんにちは!中川です! 今回はエラーへの対処方法ですが、先回のエラーを根本的に解決する方法とは異なります。 https://...

ここまで読んでいただきありがとうございました!

もっと効率よくプログラミングを学びたいなら

プログラミングをもっと早く、しかも基礎をしっかり固めたいという方はプログラミングスクールを利用することをオススメします。

TechAcademyは自宅で学べるオンライン型のスクールです。
無料体験から始めることができ、Pythonやウェブデザイン、アプリケーションの製作方法などを学べます。

TechAcademyを無料体験する

COMMENT

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください