Python | 文法の基本:print() の基本

Python
スポンサーリンク

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:,}")                       # カンマ区切り
Python

format メソッドの補足

歴史的に広く使われてきた整形方法です。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())
Python

Unicodeと日本語の表示

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 を検討。改行の重複やバッファによる遅延などの落とし穴を避ければ、デバッグからユーザー向けメッセージまで、安定して分かりやすい出力が書けます。

タイトルとURLをコピーしました