はじめに
構文エラー(SyntaxError)は、
使用しているプログラムコードが、言語の構文に違反している場合に起こるエラーのことです。
print("pythonで書いています。"
Cell In [90], line 1
print("pythonで書いています。"
^
SyntaxError: incomplete input
この場合は、
カッコの閉じ忘れでエラーが起きています。
上記のようなエラーはよく起こるため、気をつける必要があります。
他にもいくつか代表的な構文エラーがあるので紹介していきます。
構文エラーの紹介
代表的なものとして以下が挙げられます。
クォートのつけ忘れ
print("pythonで書いています。)
Cell In [91], line 1
print("pythonで書いています。)
^
SyntaxError: unterminated string literal (detected at line 1)
カッコの閉じ忘れ
print("pythonで書いています。"
Cell In [90], line 1
print("pythonで書いています。"
^
SyntaxError: incomplete input
コロンのつけ忘れ
def m()
return ("pythonで書いています。")
Cell In [97], line 1
def m()
^
SyntaxError: expected ':'
インデントの崩れ
def m():
return ("pythonで書いています。")
Cell In [98], line 2
return ("pythonで書いています。")
^
IndentationError: expected an indented block after function definition on line 1
全角スペースの利用
def m():
return ("pythonで書いています。")
Cell In [99], line 2
return ("pythonで書いています。")
^
SyntaxError: invalid non-printable character U+3000
== の代わりに = を使う
def f(x):
if x = 1:
return x
Cell In [110], line 2
if x = 1:
^
SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?
構文エラーの対処法
エラーの対処としては、
- エラーメッセージをよく読む
- 原因を推察
することが必要です。
例として以下の場合で構文エラーになったと仮定して対処します。
print("pythonで書いています。"
Cell In [90], line 1
print("pythonで書いています。"
^
SyntaxError: incomplete input
-
エラーが起こると
- SyntaxError
- IndentationError
などと出力されるので確認します。
ここでは、「SynatxError」と出力されています。
-
それに付随するメッセージが、
構文エラーの具体的内容とおおよその位置を説明してくれます。
ここでは、「incomplete input」と出力されており、
翻訳すると、不完全入力とでています。
文章を見返すと、カッコのつけ忘れがありました。 -
訂正し再度実行
print("pythonで書いています。")
pythonで書いています。
エラーを解消できました。
今回の例のように、
エラーメッセージの説明は、必ずしも分かり易くない場合があります。
ですが、原因の位置を絞りこむには有用です。
終わりに
初めはエラーメッセージが出ると焦ったり、イライラすることがあります。
ですが、今回のように対応していくことで冷静に対応できるかと思います。