LoginSignup
3

Python 構文エラーについて

Posted at

はじめに

構文エラー(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
  1. エラーが起こると

    • SyntaxError
    • IndentationError
      などと出力されるので確認します。
      ここでは、「SynatxError」と出力されています。
  2. それに付随するメッセージが、
    構文エラーの具体的内容とおおよその位置を説明してくれます。
    ここでは、「incomplete input」と出力されており、
    翻訳すると、不完全入力とでています。
    文章を見返すと、カッコのつけ忘れがありました。

  3. 訂正し再度実行

print("pythonで書いています。")

pythonで書いています。

エラーを解消できました。

今回の例のように、
エラーメッセージの説明は、必ずしも分かり易くない場合があります。
ですが、原因の位置を絞りこむには有用です。

終わりに

初めはエラーメッセージが出ると焦ったり、イライラすることがあります。
ですが、今回のように対応していくことで冷静に対応できるかと思います。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
3