Code Fix

初級

SyntaxError: invalid syntax(if x = 5:)の原因と直し方

条件式の中で = (代入)を使おうとしたときに出るエラーです。比較には == を使います。

エラーメッセージの読み方

  File "main.py", line 2
main.py
ファイル名
2
行番号 — Pythonが構文解析を諦めた位置
SyntaxError
エラークラス — 実行前の構文チェックで検出されました
invalid syntax. Maybe you meant '==' or ':=' instead of '='?
内容 — 期待していたもの、または見つけられなかったもの

このエラーが出る典型パターン

パターン1

 1  x = 5
 2  if x =   5:
          ^
 3      print("yes")
File "main.py", line 2 if x = 5: ^^^^^ SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?

=は代入、==は比較です。Pythonでは代入を式の中で使えないため、比較のつもりで=を書くとその場で構文エラーになります。

直し方: === にします。

この問題を解いてみる →

広告
広告スロット(未設定)

パターン2

 1  y = 10
 2  while y =  0:
             ^
 3      print(y)
File "main.py", line 2 while y = 0: ^^^^^ SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?

whileの条件式でも同じ規則です。構文エラーなので、ループの回数に関わらず実行すら始まりません。

直し方: === にします。

この問題を解いてみる →

パターン3

 1  flag = True
 2  if flag =  False:
             ^
 3      print("no")
File "main.py", line 2 if flag = False: ^^^^^^^^^^^^ SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?

bool型でも同じです。=を使うと値の型に関わらず必ず構文エラーになります。

直し方: === にします。

この問題を解いてみる →

よくある誤解

1文字の書き間違いですが、Pythonは代入を式の中で使えない設計になっているため、その場で構文エラーとして検出されます。C言語のように「代入した値で比較され、意図せず真になる」という事故は起きません。

まとめ

SyntaxError: invalid syntax(if x = 5:)の原因と直し方は初級でつまずきやすい項目です。上の3パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。

演習をはじめる

関連するエラー

広告
広告スロット(未設定)