Pythonで変数の値とテキストを組み合わせて画面に表示させる場面は、デバッグ作業やログ出力など、プログラムの動作確認で頻繁に発生します。文字列と変数を出力する手段としてよく使われるのが「print関数」で、用途に応じた複数の記法を用いることによって、直感的で可読性の高いコードを実現できます。
この記事では、Pythonのprint関数で文字と変数を一緒に出力する基本的な使い方を解説していきます。エラーを防ぐための型変換の注意点なども含め、サンプルコード付きで解説していきますので、ぜひ参考にしてください。
Pythonのprintで文字と変数を出力する方法
文字列と変数を組み合わせた出力には、目的に合わせた以下の4つのアプローチが存在します。
| 手法 | 特徴 |
|---|---|
| f-string | コードが短く可読性が高い |
| str.format()メソッド | インデックスやキーワードで柔軟に指定可能 |
| カンマ区切り | 型エラーが起きず、自動でスペースが挿入される |
| +演算子 | 文字列型のみ結合可(数値型変数は直接使用不可) |
それぞれ特徴が異なるため、用途に応じて使い分けると読みやすいコードを実現できます。詳細は以下で解説します。
f-stringを使用して出力する
Python 3.6以降で導入されたf-string(フォーマット済み文字列リテラル)を利用すると、文字列内に変数や式(expression)を直接埋め込めます。変数だけではなく計算式やメソッド呼び出しなど変数・演算・メソッド呼び出しなどのPython式も波括弧内に記述できます。
f-stringの使い方は、文字列の先頭に「f」または「F」を付け、変数を波括弧({})で囲みます。
name = "Python"
version = 3
print(f"言語は{name}で、バージョンは{version}です")
上記のコードでは、文字列の中に直接変数が展開され、直感的な記述で出力されます。
コードが短く可読性が高いため、Python 3.6以降で標準的な手法として定着しています。
str.format()メソッドを使用して出力する
str.format()メソッドは、文字列型(str)のインスタンスメソッドで、文字列内のプレースホルダー({})に対して引数で渡した変数を順番に埋め込みます。
str.format()メソッドの使い方は、文字列の後に「.format()」を繋げ、引数に変数を与えます。
name = "Python"
version = 3
print("言語は{}で、バージョンは{}です".format(name, version))
上記のコードでは、中括弧の順番に従って変数が代入され出力されます。
インデックスやキーワード引数を指定した柔軟なフォーマットも可能で、複雑な文字列生成に役立ちます。
カンマ区切りを使用して出力する
関数の引数に文字列や変数をカンマ(,)で区切って複数渡すことによって、それらを並べて出力できます。
カンマ区切りの使い方は、括弧内に変数や文字列をカンマで並べるだけです。
name = "Python"
version = 3
print("言語は", name, "で、バージョンは", version, "です")
上記のコードでは、各引数の間にデフォルトで半角スペースが挿入されて出力されます。
print()関数は数値や文字列など通常の型であれば明示的な型変換なしで出力できます(内部で各引数の__str__メソッドを呼び出す仕組みのため)。区切り文字を変更したい場合はsepパラメータで制御できます(詳細はよくある質問を参照)。
+演算子を使用して出力する
+演算子を使用すると、複数の文字列同士を結合して1つの文字列として出力できます。なお、+演算子はprint関数の機能ではなくPythonの文字列結合演算子であり、結合された文字列をprint関数に渡す仕組みです。
+演算子はstr型のみに使えるため、下記の例では version を文字列型("3")で定義しています。f-stringやカンマ区切りの例と変数の型が異なる点に注意してください。
name = "Python"
version = "3"
print("言語は" + name + "で、バージョンは" + version + "です")
上記のコードでは、文字列同士が隙間なく結合されて出力されます。
数値型の変数と文字列型を直接結合するとTypeErrorが発生します。詳しい原因と対処方法は次のセクションで解説します。
Pythonの変数と文字列の連結エラーを防ぐ方法
+演算子を用いてテキストと数値をそのまま結合しようとすると、例外処理をしていない場合は処理が中断します。
このような意図しないエラーを未然に防ぎ、安定した出力を実現するための手法を順番に解説します。
TypeErrorが発生するケースとその原因
Pythonでは、異なるデータ型をそのまま連結しようとすると、TypeErrorが発生します。特に、テキストデータと数値を+演算子で繋ぐ場面で頻発するエラーです。
以下のコードは、型エラーが発生する典型的な例です。
text = "現在の温度は"
temp = 25
print(text + temp + "度です")
上記のコードを実行すると、TypeError: can only concatenate str (not "int") to strというエラーメッセージが表示されます。このメッセージは「str型にはstr型しか連結できない(int型は連結できない)」という意味で、tempが整数型であることが原因です。
意図しない動作を避けるためには、各変数のデータ型を正確に把握しておくアプローチが有効です。
str関数を用いてデータ型を変換する
数値をテキストとして扱いたい場合は、str関数を用いて明示的に型を変換します。データ型を揃えることによって、+演算子による安全な連結が可能です。
str関数を利用してエラーを回避する使い方は、以下のとおりです。
text = "現在の温度は"
temp = 25
print(text + str(temp) + "度です")
上記のコードでは、数値が代入された変数を文字列に変換してから連結しているため、エラーを発生させずに結果を出力できます。
データ型を統一する仕組みを理解しておくと、バグの少ないコードを記述する際に役立ちます。
Pythonのprintの文字と変数に関するよくある質問
print関数で改行せずに出力できますか?
print関数で改行せずに出力するには、引数endに空の文字列を指定します。
デフォルトでは出力の末尾に改行文字が追加される仕様です。end=""と設定することによって、次の出力が同じ行に続けて表示されます。
複数の変数を空白なしで出力できますか?
複数の変数を空白なしで出力するには、print関数の引数sepに空の文字列を指定します。
カンマ区切りで変数を渡すとデフォルトで半角スペースが挿入されます。sep=""を指定すれば、スペースをなくして隙間なく結合して表示されます。
リストや辞書のデータをそのまま出力できますか?
リストや辞書のデータも、変数名をそのままprint関数に渡すだけで中身を出力できます。
そのまま出力した際に構造が複雑で読みづらい場合は、pprintモジュールのpprint.pprint()関数を活用すると、整形して見やすく表示されデバッグがしやすくなります。
※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。
ITやプログラミングに関するコラム
PythonをWebで実行する方法
共通テスト「情報Ⅰ」2年目で変わる、日本の教育と学び方
gitでブランチ(branch)を切り替える方法
git cloneでブランチを指定する方法
64GBのメモリが必要な人・不要な人の特徴
PCを再起動するコマンド一覧
CapsLock以外で大文字になる原因【Windows編】
パソコンで大文字になるのを解除する方法
面白いAIの活用事例を業界別に紹介
Gitでcommit(コミット)を取り消す方法
ITやプログラミングに関するニュース
サイボウズがkintone AIを正式提供、β版から約1年を経てクレジット制を導入
ロゼッタのラクヤクAIがCSRドラフト作成期間を90%以上短縮、従来4週間を約2日に
AI CROSSが不動産業界向け生成AI伴走支援を開始、アスコットの業務AI実装を実践サポート
日本情報クリエイトが「オーナー提案AIロボⅡ」売買査定を刷新、月1万円からW査定が回数無制限に
Wur株式会社がAI新規事業診断サービス「MVP事業診断レポート」をリリース、12の質問で事業構想を約10分で分析
バトンズがM&A専門家向け「AI概要書」β版を提供開始、企業概要書のドラフトを最速3分で自動生成
SCSKが観光DXサービス「Connexia」を開発、首里城公園でNFT活用の周遊促進が始動
Verdent AI発表、エンジニア不要でソフトウェアを構築する「AIエンジニアリングチーム」が登場
ゼネラルBREXAテクノロジーが外食・小売向けAIサービス「aimana」を開発、店長の意思決定をデータで支援
田中組がKencopa工程AIエージェント製品版を先行利用開始、建設現場の工程管理属人化を解消へ
