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パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。