PythonのSyntaxError「Missing parentheses in call to 'print'」エラーの原因と解決方法
Python 3では、すべてのprint文を括弧(カッコ)で囲む必要があります。文字列をコンソールに出力する際に括弧で囲まなかった場合、「SyntaxError: Missing parentheses in call to 'print'」というエラーが発生します。
この記事では、このエラーの意味と、Pythonにおけるprintの正しい使い方について解説します。実際のエラー例を通して、解決方法を一緒に学んでいきましょう。
SyntaxError: Missing parentheses in call to 'print' とは
Python 3は、このプログラミング言語の第3のメジャーバージョンであり、近年ではPythonを使う際の標準的なバージョンとなっています。
Python 3では、printの書き方が大きく変更されました。単独で記述するprint文はPython 2で動作し、コンソールに内容を出力します。
一方、Python 3ではprintは関数として扱われます。そのため、通常の関数呼び出しと同じように、コンソールに出力したい文字列を括弧で囲む必要があります。
エラーが発生する具体例
ここで、4年生のクラスに在籍する生徒のうち、名前が「A」で始まる生徒をすべて出力するプログラムを作成してみましょう。まず、クラスの生徒名を格納したリストを定義します。
students = ["Alex", "Alexander", "Piper", "Molly", "Hannah"]
次に、このリスト内のすべての要素を反復処理するforループを作成します。forループの中では、if文を使って各名前が「A」で始まるかどうかをチェックします。
for s in students:
if s.startswith("A") == True:
print s
startswith()メソッドは、文字列が特定の文字または文字列で始まるかどうかを判定するメソッドです。このコードでは、「students」リスト内の各名前が「A」で始まるかどうかを確認しています。
さらに、プログラムの実行が完了したことを伝えるためのprint文をコードの末尾に追加しましょう。
print "Above are all the students whose names begin with A."
それでは、プログラムを実行してみます。
File "main.py", line 5
print s
^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(s)?
実行結果を見ると、プログラムに構文エラー(シンタックスエラー)があることが通知されています。
解決方法
幸いなことに、Pythonはエラーメッセージの中にすでに解決策を提示してくれています。「Did you mean print(s)?」というヒントがそれです。
この親切なエラーメッセージが導入された背景には、以前のバージョンの事情があります。以前のPython 3では、print文の括弧を忘れた場合に表示されるのは「invalid syntax(無効な構文)」というエラーだけでした。しかし、このメッセージは非常に曖昧で、無効な構文はさまざまな原因で発生する可能性があるため、初心者にとって原因を特定しづらいものでした。そこでPythonでは、ユーザーの利便性を向上させるために、新しい「missing parentheses(括弧がない)」というエラーメッセージが導入されました。
この問題を解決するには、コンソールに出力したいすべての値を括弧で囲みます。
for s in students:
if s.startswith("A") == True:
print(s)
print("Above are all the students whose names begin with A.")
これで、print行のコード内の「s」が括弧で囲まれ、最後に出力する文字列も括弧で囲まれました。プログラムが正常に動作するか確認してみましょう。
Alex Alexander Above are all the students whose names begin with A.
コードの出力から、「A」で始まる名前を持つ生徒が2人いることがわかります。生徒リストの反復処理が完了すると、プログラムは結果を説明するメッセージを出力します。
まとめ
Pythonの「SyntaxError: Missing parentheses in call to 'print'」エラーは、コンソールに値を出力する際に、その値を括弧で囲まずにprintを使用しようとした場合に発生します。
このエラーを解決するには、コンソールに出力したいステートメントをすべて括弧で囲みます。これは、Python 3ではprintが文ではなく関数であるためです。関数を実行するには、必ず括弧を使って呼び出す必要があります。
これで、このよくあるPythonエラーをプロのように修正できるようになりました!
-
Pythonでパターンを出力する方法|三角形・数字・アルファベット・ピラミッドのコード例
Pythonでパターンを出力するには、ネストされた(入れ子構造の)forループを使用します。外側のループで行数を制御し、内側のループで列数を処理します。そしてprint文を工夫することで、目的に応じたさまざまなパターンを作成できます。パターンには、星(アスタリスク)パターン、数字パターン、アルファベットパターンなどがあり、三角形やピラミッドなど、さまざまな形状にも対応できます。パターン出力の基本これらのパターンは、print文を少し変更しながらforループを組み合わせることで出力できます。基本的な考え方はどのパターンも共通しており、違いはごくわずかです。ここからは、代表的なパターンのコードを実
-
Pythonの辞書で存在しないキーを安全に扱う方法|KeyError対策を徹底解説
Pythonには「辞書(Dictionary)」と呼ばれるコンテナ型があります。辞書ではキー(key)と値(value)を対応付けて管理でき、値へのアクセスは定数時間で行えるため非常に高速です。しかし、存在しないキーにアクセスしようとすると、エラーが発生してしまうという課題があります。 本記事では、辞書のキーが存在しない場合に発生するエラーへの対処法として、get()メソッド、setdefault()メソッド、そしてcollections.defaultdictの3つの手法をわかりやすく解説します。 存在しないキーにアクセスするとどうなる? まず、辞書に存在しないキーへ直接アクセスした場合の挙