SyntaxError: Missing parentheses in call to 'print' の原因と直し方
Python 2の書き方(print文)をPython 3で使うと出るエラーです。printが「文」から「関数」に変わったことが原因です。
エラーメッセージの読み方
File "main.py", line 2
main.py- ファイル名
2- 行番号 — Pythonが構文解析を諦めた位置
SyntaxError- エラークラス — 実行前の構文チェックで検出されました
Missing parentheses in call to 'print'. Did you mean print(...)?- 内容 — 期待していたもの、または見つけられなかったもの
このエラーが出る典型パターン
パターン1
1 message = "hello" 2 print message ^
File "main.py", line 2
print message
^^^^^^^^^^^^^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(...)?
Python 2ではprintは文でしたが、Python 3では関数です。関数として呼び出すには括弧が必要です。
直し方: message を (message) にします。
広告
広告スロット(未設定)
パターン2
1 name = "Tom" 2 age = 20 3 print name, age ^
File "main.py", line 3
print name, age
^^^^^^^^^^^^^^^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(...)?
複数の値を渡す場合もカンマの前に括弧が必要です。カンマだけでは関数呼び出しになりません。
直し方: name, age を (name, age) にします。
パターン3
1 score = 90 2 print "Score:", score ^
File "main.py", line 2
print "Score:", score
^^^^^^^^^^^^^^^^^^^^^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(...)?
文字列と変数を混ぜて表示する場合も同じです。printの後には必ず丸括弧で引数をまとめます。
直し方: "Score:", score を ("Score:", score) にします。
よくある誤解
自分で書いたコードでは起きにくく、古い書籍やネット上の情報をそのまま写したときに多発します。Python 2時代の情報はまだ大量に残っています。
まとめ
SyntaxError: Missing parentheses in call to 'print'は初級でつまずきやすい項目です。上の3パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。