print() の概要(基本動作と戻り値)
print() は、与えた値を「見やすい文字列」に変換して標準出力(画面)へ表示します。複数の値を並べて渡すと、間は半角スペースで区切られます。表示後は改行されるのが既定動作です。数値やリストなど、ほとんどの型を自然に文字列へ整形してくれるため、確認やメッセージ表示の入口として最もよく使われます。
print("Hello, Python!") # 文字列
print(123) # 数値
print("合計:", 120 + 340) # 複数の値(スペース区切り)
Python主要な引数(sep, end, file, flush)
区切り文字(sep)を変える
複数の値の間には既定でスペースが入ります。sep に文字列を指定すると区切りを変更できます。CSVや日付の整形に便利です。
print("2025", "12", "12", sep="-") # 2025-12-12
print("a", "b", "c", sep=",") # a,b,c
Python行末の文字(end)を制御する
print は出力の最後に改行(\n)を付けます。end で変更することで、改行しない、句読点を付ける、上書き風の表示などができます。
print("Loading", end="") # 改行しない
print("...", end="\n") # 明示的に改行
print("Hello", end="") # 同じ行に続けて表示
print("World") # HelloWorld
Python出力先(file)を変える
既定では標準出力に表示しますが、file を使うとファイルへ書き込めます。with を使って安全にクローズしましょう。
with open("log.txt", "w", encoding="utf-8") as f:
print("ログを書き込みます", file=f)
Pythonすぐ表示する(flush)
環境によっては出力がバッファされ、即時に画面へ出ないことがあります。flush=True で「今すぐ出す」を指示できます。プログレス表示やリアルタイムログで有効です。
import time
for i in range(3):
print(i, end=" ", flush=True)
time.sleep(0.5)
Python文字列整形(f文字列・format・str)
f文字列で読みやすく整形
f”{式}” の形で値を埋め込み、桁や小数点の指定も簡単です。可読性が高く、現代のPythonでは第一選択です。
name, score = "太郎", 92.345
print(f"{name}さんの点数は {score:.1f} 点") # 小数1桁
price = 1234567
print(f"価格: ¥{price:,}") # カンマ区切り
Pythonformat メソッドの補足
歴史的に広く使われてきた整形方法です。f文字列が使えない場面やテンプレートの再利用に向きます。
print("合計: {0:,} 円".format(1234567))
Python文字列化(str)と開発者向け表示(repr)
str() は「人向けに見やすい」文字列、repr() は「開発者向けに再現性の高い」表示を目指します。デバッグでオブジェクトの詳細が欲しいときは repr を使います。
text = "Hello\nWorld"
print(str(text)) # 実際の改行を含む
print(repr(text)) # 'Hello\nWorld' とエスケープが見える
Pythonよく使うパターン(配列・辞書・改行・Unicode)
配列や辞書の見やすい表示
そのまま print でも表示されますが、構造が大きいと読みにくいことがあります。pprint を使うと整形して見せてくれます。
from pprint import pprint
data = {"name": "花子", "scores": [70, 85, 90], "meta": {"class": "A"}}
pprint(data)
Python複数行のメッセージ
複数行のテンプレートは三重引用符を使うと書きやすく、最後に strip() で余計な改行を削れます。
receipt = f"""
--- Receipt ---
Item: Coffee
Price: ¥{350:,}
Qty: 2
"""
print(receipt.strip())
PythonUnicodeと日本語の表示
Pythonの文字列はUnicodeです。コンソールやファイルのエンコードが合っていれば、そのまま日本語を出力できます。ファイルへ書くときは encoding=”utf-8″ を明示すると安全です。
print("江東区でPythonを練習中")
with open("jp.txt", "w", encoding="utf-8") as f:
print("日本語の出力テスト", file=f)
Python深掘りポイント(性能・デバッグ・落とし穴)
大量結合は join、逐次出力は print
大量の文字列を一度に作るなら join が高速でメモリ効率も良いです。逐次ログのように「都度出す」なら print を使い、必要なら flush=True。
lines = [str(i) for i in range(1000)]
print("\n".join(lines)) # まとめて1回の出力
Pythonログ用途では logging を検討
print は簡単ですが、レベルやタイムスタンプ、出力先の切り替えが必要なら logging モジュールが適しています。学習初期は print、運用段階で logging に移行するとスムーズです。
改行が重複する問題
文字列末尾に \n が既に含まれているのに print が改行を付けると、空行ができることがあります。end=”” を使って二重改行を避けます。
line = "Hello\n"
print(line, end="") # 改行を重ねない
Python例題で身につける
例題1:プログレスラインの上書き表示
同じ行に進捗を更新します。end と \r を組み合わせ、最後に改行を入れて行を確定します。
import time
for i in range(0, 101, 20):
print(f"\rProgress: {i:3d}%", end="")
time.sleep(0.3)
print() # 改行して確定
Python例題2:CSVライクな出力(sep の活用)
headers = ["item", "price", "qty"]
print(*headers, sep=",") # item,price,qty
print("coffee", 350, 2, sep=",") # coffee,350,2
Python例題3:レシート整形(f文字列とフォーマット)
item, price, qty = "Coffee", 350, 2
subtotal = price * qty
tax = round(subtotal * 0.1)
total = subtotal + tax
print(f"小計: ¥{subtotal:,} / 税: ¥{tax:,} / 合計: ¥{total:,}")
Python例題4:ファイルへ追記と即時出力(file と flush)
with open("events.log", "a", encoding="utf-8") as f:
print("起動", file=f, flush=True) # すぐに書き出す
Pythonまとめ
print() は「見せたい値をすぐに画面へ出す」ための最強の入口です。区切り(sep)と行末(end)で整え、出力先(file)と即時表示(flush)で挙動を制御します。整形は f文字列が第一選択、構造化は pprint が便利。大量結合は join、ログは logging を検討。改行の重複やバッファによる遅延などの落とし穴を避ければ、デバッグからユーザー向けメッセージまで、安定して分かりやすい出力が書けます。
