はじめに
今回は最もよく目にするうちの一つである「SyntaxError」についてです。Pythonでコードを書き始めた時に必ず1回は遭遇するエラーだと思います。
SyntaxErrorエラーの原因のパターンとそれぞれの対処方法とサンプルプログラムを載せているので参考にしていただければと思います。
エラーの原因と対処法
SyntaxErrorが出るケース
まずエラーですが、
SyntaxError: ******
というものです。
日本語で訳すと
「構文エラー:******」
となります。
******はエラーのケースによって異なります
Pythonという言語の書き方のルールに沿っていない場合に発生するエラーですね。
原因とサンプルソース
SyntaxErrorが発生するケースの例
Pythonプログラムで「SyntaxError」が発生する一般的な原因は以下の通りです:
- コロンの欠落
- 括弧や引用符の不一致
- 無効な変数名
コロンの欠落
Pythonでは、関数や制御フローブロック(if文、for文、while文など)の後にはコロン(:)を必要とします。これらの箇所でコロンが抜けるとSyntaxErrorとなります。
エラーが発生するソースコード
コロンがない場合でエラーが発生する例です。
# エラーが発生するコード
if True
print("Hello, world!")
これを実行すると
if True
^
SyntaxError: invalid syntax
とSyntaxErrorになります。
修正したソースコード
修正したコードは次のようになります。
# 修正したコード
if True:
print("Hello, world!")
これを実行すると
Hello, world!
となります。
括弧や引用符の不一致
エラーが発生するソースコード
Pythonはインデント(通常はスペース4つまたはタブ)を使用してコードブロックを定義します。不適切なインデントはSyntaxErrorを引き起こします。
# エラーが発生するコード
print("Hello, world!)
これを実行すると
print("Hello, world!)
^
SyntaxError: EOL while scanning string literal
とSyntaxErrorの1つである「EOL while scanning string literal」が発生します。
修正したソースコード
SyntaxErrorを直すには末尾の「”」が抜けている部分を追加します。
print("Hello, world!")
これを実行すると
Hello, world!
となります(シンプルだ)。
無効な変数名
Pythonでは、変数名は英字(a-z、A-Z)かアンダースコア(_)で始まらなければならず、その後に英数字(a-z、A-Z、0-9)またはアンダースコア(_)が続きます。これらの規則に違反すると、 SyntaxError: invalid syntax が発生します。
エラーが発生するソースコード
# エラーが発生するコード
1st_number = 1
このソースを実行すると
1st_number = 1
^
SyntaxError: invalid syntax
修正したソースコード
命名規則のため先頭の数字を変更します。
# 修正したコード
first_number = 1
こうすることでエラーを避けることが出来ます。
さいごに
今回はSyntaxErrorが発生するいくつかのよく発生するパタンについてみてみました。
特にPythonの学習始めだったりするとこういったエラーが発生するので対応方法を知っておくのがいいですね(久しぶりに使ったりする時も構文を忘れて良くなったりもします)
この記事がお役に立ったのなら嬉しいです。
最後までお読みいただきありがとうございます。