pythonでよくあるerrorの一覧について
1. Server Connection Error
『Server Connection Error
A connection to the Jupyter server could not be established. JupyterLab will continue trying to reconnect. Check your network connection or Jupyter server configuration.』と表示される。原因はタブを開いたまま、ブラウザを閉じることらしいです。
対処方法は2つあります。Anacondaを一回閉じたうえで行ってください。
[1]anaconda promptを開いて、コマンドライン上でディレクトリを変更する。例えば、cd Downloadsと入力する。
(base) C:\Users\***>cd Downloads
[2][1]でうまくいかない場合、Server Connection Errorが表示されている環境で開かれているタブをすべて閉じて(タブの数が多い場合は複数回に分けてタブをすべて閉じてください)、仮想環境からログアウトする。その後[1]を行う。[1]を行わなくても動く可能性があります。
2. SyntaxError
Syntaxとは日本語に訳すと文法という意味であるため、SyntaxErrorはプログラムの文法が異なるために生じるエラーです。つまり、エラーの解決方法は文法を正しく買いなおすことです。
SyntaxErrorの例としては、次のようなものがあります。
2.1. 括弧が閉じられていない
print("Hello, world!
エラー文
Input In [1]
print("Hello, world!
^
SyntaxError: unterminated string literal (detected at line 1)
上記のコードでは、print()の括弧が閉じられていないこととダブルクオーテーションで文字列を閉じていないことが問題です。正しいコードは以下のようになります。
print("Hello, world!")
3. IndentationError
Pythonにおいて、IndentationErrorはコードのインデントが正しくないことを示します。Pythonの場合、コードブロックはインデントによって区切られます。例えば、for、if、while、関数など、ブロックを形成するコードの後には、そのコードブロックが開始されたことを示すために、次の行に適切な数のスペース(通常は4つ)が必要であるが、それが正しく行われていないときに発生する。
3.1. インデントが間違っている
for i in range(12):
print(i)
エラー文
Input In [2]
print(i)
^
IndentationError: expected an indented block after 'for' statement on line 1
上記のコードでは、for文の後にあるprint(i)のインデントがされていないため、IndentationErrorが発生します。「expected an indented block after ‘for’ statement」と表示されているように、for文の後はインデントブロックが期待されるます。正しいコードは以下のようになります。
for i in range(12):
print(i)
4. IndexError
PythonにおけるIndexErrorは、リスト、タプル、文字列などのインデックスに対して、範囲外のインデックスが指定された場合に発生します。
4.1. リストにおける範囲外
my_list = [1, 2, 1010]
print(my_list[3])
エラー文
IndexError Traceback (most recent call last)
Input In [4], in ()
1 my_list = [1, 2, 1010]
----> 2 print(my_list[3])
IndexError: list index out of range
リストmy_listには3つの要素しかないため、インデックスが3の要素は存在しないためIndexErrorが発生します。このように、リストのインデックスが範囲外の場合にIndexErrorが発生します。
5. NameError
PythonのNameErrorは、定義されていない変数や関数などの名前が参照された場合に発生する例外です。通常、Pythonインタープリタは、変数名や関数名が使われる前にそれらを定義することが必要ですが、誤った名前を使用した場合や、名前を定義する前に参照した場合にこのエラーが発生することがあります。
5.1. 未定義の関数や変数を呼び出したときの例
means=1
mean
NameError Traceback (most recent call last)
Input In [3], in ()
1 means=1
----> 2 mean
NameError: name 'mean' is not defined
meansという変数は定義されているがmeanという名前の変数、関数が定義していないためNameErrorが発生します。