Pythonでプログラムを書き始めると、まず最初に知っておきたいのが画面に文字を表示する方法です。
本記事では、標準出力に文字や数値を表示するための基本関数print()
について、動作の基礎から書式指定、エスケープ、Unicodeの扱い、そして初心者がつまずきやすい点まで、サンプル付きで丁寧に解説します。
Pythonの標準出力 print()の基本と使い方
最初のprintサンプル
Pythonで画面に文字を表示するにはprint()
を使います。
最初の一歩として、定番の「Hello, World!」を表示してみます。
# hello.py
# 画面に文字列 "Hello, World!" を表示する最小サンプル
print("Hello, World!") # ダブルクォートで文字列を記述
Hello, World!
Pythonのprint()
は、与えた値を文字列に変換して標準出力に表示し、最後に改行をつけるのが基本動作です。
文字列を表示する基本
文字列はシングルクォート'...'
でもダブルクォート"..."
でも書けます。
改行を含む複数行の文字列はトリプルクォートを使うと読みやすくなります。
# 文字列リテラルのいろいろ
print('シングルクォート') # '...'
print("ダブルクォート") # "..."
print("""複数行の
テキストを
そのまま書けます""") # """..."""
シングルクォート
ダブルクォート
複数行の
テキストを
そのまま書けます
どちらの引用符を使うかは好みで構いませんが、文中に含めたい引用符と衝突しない方を選ぶとエスケープが少なく済みます。
- 関連記事:文字列の結合と繰り返し
- 関連記事:文字列の長さを調べる
数値や式の結果を表示
print()
は数値もそのまま渡せます。
式を評価して結果を表示することも可能です。
# 数値と式の表示
print(123) # 整数
print(3.14159) # 浮動小数点数
print(1 + 2 * 3) # 演算の結果 (優先順位に注意)
x = 10
y = 4
print(x, "+", y, "=", x + y) # 文字列と数値を並べて表示
123
3.14159
7
10 + 4 = 14
数値を文字列に変換する処理はprint()
が自動で行いますので、初心者はまず「そのまま渡す」で大丈夫です。
複数の値をまとめて表示
複数の値はカンマで区切って並べると、その間にスペースを挟んで表示されます。
区切り文字はsep
引数で変更できます。
# 複数値の表示と区切り文字 sep
print("A", "B", "C") # デフォルトはスペース区切り
print("A", "B", "C", sep=",") # カンマ区切り
print("2025", "09", "10", sep="-") # ハイフンで日付風に
A B C
A,B,C
2025-09-10
区切り文字の制御はログ行やCSV風の出力に便利です。
以下にprint()
の主な引数をまとめます。
引数 | 役割 | 例 |
---|---|---|
sep | 複数値の区切り文字 | print("A","B",sep=":") |
end | 行末の文字列 | print("Hello", end="") |
file | 出力先ファイルオブジェクト | print("err", file=sys.stderr) |
flush | バッファを即時フラッシュ | print("...", flush=True) |
標準出力の最後に自動でつく改行はend
で変更できます。
- 関連記事:loggingを使ったデバッグログの生成
空行を出力する
空行はprint()
を引数なしで呼ぶだけです。
逆に、end=""
を使うと改行をつけずに出力できます。
# 空行と改行の有無
print("1行目")
print() # 空行を1つ出力
print("3行目")
print("同じ行に", end="") # 行末で改行しない
print("続けて表示") # ここで改行
1行目
3行目
同じ行に続けて表示
- 関連記事:print()で改行しない方法
日本語とUnicodeを表示
Python 3はUnicodeが標準です。
日本語や絵文字もそのまま表示できます。
# 日本語とUnicode
print("こんにちは、Python") # 日本語
print("寿司は🍣です") # 絵文字
print("\u3042 \u3044 \u3046") # Unicodeコードポイント(ひらがなの あ い う)
print("\N{SUSHI}") # Unicode名で指定(環境によって表示可否あり)
こんにちは、Python
寿司は🍣です
あ い う
🍣
一部の端末やフォントでは絵文字が表示できないことがあります。
後述のエンコーディングの節も参照してください。
- 関連記事:文字とバイトの違い – encode/decode
- 関連記事:UnicodeEncodeError/UnicodeDecodeError
- 関連記事:文字化け対策 – cp932とencodingの使い分け
- 関連記事:print — Python公式ドキュメント
- 関連記事:Unicode HOWTO — Python公式
引用符とバックスラッシュの扱い
文字列中で同じ種類の引用符を含めたい場合はエスケープが必要です。
Windowsのパスなどバックスラッシュが多い文字列にはraw
文字列が便利です。
# 引用符とバックスラッシュ
print('I\'m fine.') # シングルクォート内で ' を使うので \" でなく \' をエスケープ
print("He said \"OK\".") # ダブルクォート内で " をエスケープ
print("C:\\Users\\Alice") # バックスラッシュを2つ重ねる
print(r"C:\Users\Alice") # r"...": raw文字列。バックスラッシュをそのまま扱う
I'm fine.
He said "OK".
C:\Users\Alice
C:\Users\Alice
raw文字列は末尾を単独のバックスラッシュで終わらせられないという制限があります。
必要なときは通常の文字列で"...\"
のように書きます。
- 関連記事:正規表現(re)入門
改行\nやタブ\tなどのエスケープ
制御文字はバックスラッシュ記法を使って表現します。
# 改行とタブのエスケープシーケンス
print("1行目\n2行目\n3行目") # \n は改行
print("列1\t列2\t列3") # \t はタブ
1行目
2行目
3行目
列1 列2 列3
複雑なレイアウトはタブよりも書式指定や幅指定で整える方が意図通りになりやすいです。
文字列の整形と書式指定のprintサンプル
f文字列で読みやすく表示
Python 3.6以降ではf
文字列が使えます。
変数や式を{}
内に直接書け、フォーマット指定も可能です。
# f文字列の基本と書式指定
name = "Alice"
score = 93.456
print(f"名前: {name}, 得点: {score}") # 変数をそのまま埋め込み
print(f"得点(小数2桁): {score:.2f}") # 小数点以下2桁
print(f"パーセント: {score/100:.1%}") # パーセント表示
print(f"カンマ区切り: {1234567:,}") # 3桁ごとにカンマ
名前: Alice, 得点: 93.456
得点(小数2桁): 93.46
パーセント: 93.5%
カンマ区切り: 1,234,567
f文字列は読みやすく高速で、日常的な整形に最も適しています。
formatで柔軟に書式指定
str.format()
は位置引数や名前付き引数を柔軟に組み合わせられます。
テンプレートを再利用したい場合に便利です。
# str.format の活用
template = "氏名: {who}, 年齢: {age}歳"
print(template.format(who="Bob", age=20)) # 名前付き
print("{0} + {0} = {1}".format("A", "AA")) # 同じ引数を複数回利用
print("{:>8} | {:<8}".format("右寄せ", "左寄せ")) # 幅と寄せ
氏名: Bob, 年齢: 20歳
A + A = AA
右寄せ | 左寄せ
小数点の桁数やゼロ埋めを指定
数値の見た目はフォーマット指定子で細かく制御できます。
# 桁数・ゼロ埋め・指数表記など
pi = 3.1415926535
n = 42
print(f"小数点2桁: {pi:.2f}") # => 3.14
print(f"ゼロ埋め5桁: {n:05d}") # => 00042
print(f"指数表記: {pi:.3e}") # => 3.142e+00
小数点2桁: 3.14
ゼロ埋め5桁: 00042
指数表記: 3.142e+00
整数はd
、実数はf
やe
を使うのが基本です。
幅指定と左右寄せを整える
表形式の出力では幅と寄せを揃えると読みやすくなります。
# 幅(=最小表示幅)と寄せの制御
items = [("Apple", 120), ("Banana", 80), ("Cherry", 550)]
for name, price in items:
print(f"{name:<10} | {price:>6,d} 円") # 名前は左寄せ、価格は右寄せ・カンマ区切り
Apple | 120 円
Banana | 80 円
Cherry | 550 円
寄せ記号は<
(左寄せ)、>
(右寄せ)、^
(中央寄せ)です。
任意の埋め文字も指定できます。
# 埋め文字と中央寄せ
print(f"{'Title':=^20}") # = で埋めて中央寄せ、幅20
=======Title========
全角文字は1文字の見かけ幅が異なるため、環境によってはぴったり揃わないことがあります。
必要に応じて等幅フォントやライブラリの導入を検討してください。
数値のカンマ区切りや%表示
頻用される表現は指定子で簡単に書けます。
# カンマ区切りとパーセント
n = 12345678
ratio = 0.0765
print(f"カンマ区切り: {n:,}")
print(f"パーセント: {ratio:.2%}") # 小数2桁の%表示
カンマ区切り: 12,345,678
パーセント: 7.65%
桁区切りは:,
、割合は:%
で覚えると実務で即戦力になります。
- 関連記事:f-string書式指定まとめ
よくあるつまずきと対処法
全角記号や引用符のミスによるエラー
日本語入力のままprint("Hello")
のように全角の括弧を使うとSyntaxError
になります。
# よくあるミス(実行するとエラー)
# print("Hello") # 全角の(,)はNG
# print("He said "OK"") # 引用符の不一致もNG
正しくは半角の記号を使い、引用符はエスケープまたは別の種類にします。
print("He said \"OK\"") # もしくは print('He said "OK"')
He said "OK"
エディタの入力モードを確認し、リントやフォーマッタを導入すると初歩的なミスを自動で検出できます。
- 関連記事:Tracebackの読み方と直し方
- 関連記事:よくある5大エラーの原因と対策
エンコーディングによる文字化けの回避
Python 3ではソースコードの既定エンコーディングはUTF-8です。
とはいえ、表示先の端末やフォントによっては文字化けや表示不可が起きます。
対処の要点は次の通りです。
箇条書きに留め、重要点だけ整理します。
- Windowsの古いコンソールではUTF-8表示が不安定です。
Windows Terminal
かVS Codeのターミナルを使うと安定します。どうしてもコマンドプロンプトを使うならchcp 65001
でUTF-8に切り替えます。 - 一時的にPythonの入出力をUTF-8に固定したい場合は環境変数
PYTHONIOENCODING=utf-8
を設定します。 - 外部ファイルへ出力する際は
open(..., encoding="utf-8")
を明示します。
# ファイルにUTF-8で書き出し
with open("out.txt", "w", encoding="utf-8") as f:
print("日本語OK 🍣", file=f) # print の file 引数で出力先を指定
生成されたファイルはUTF-8対応のエディタで正しく表示できます。
改行コードの違いを意識した表示
Pythonのprint()
はend="\n"
が既定で、\n
は各OSに適した改行に扱われます。
通常は気にしなくて構いませんが、他システムと厳密に改行コードを合わせたい場合は注意します。
# 末尾の改行を制御したいとき
print("改行しない出力", end="") # 改行なし
print("CRのみ", end="\r") # Windowsメモ帳などでは意図と異なる見え方に注意
ファイルに書く場合、CSVなどではnewline=""
の指定が推奨されます。
import csv
rows = [["name", "score"], ["Alice", 95], ["Bob", 88]]
with open("scores.csv", "w", encoding="utf-8", newline="") as f:
writer = csv.writer(f)
writer.writerows(rows)
テキスト処理で困ったら「エンコーディングはUTF-8」「改行は環境に任せる」を基本にし、必要なときにだけ明示指定するのが安定します。
まとめ
本記事では、標準出力に表示するためのprint()
の基礎から、書式指定やエスケープ、Unicode、実務での注意点までを段階的に解説しました。
まずはprint()
で文字列や数値を表示し、sep
やend
で出力を整え、必要に応じてf
文字列やformat()
で見栄えを調整する流れを身につけてください。
日本語や絵文字を扱う際は環境のエンコーディングとフォントに注意し、困ったらUTF-8を基準に考えると解決が早いです。
最初の一歩としてprint()
を味方にし、動作確認やデバッグにも活用していきましょう。
- 関連記事:breakpoint()で手早くバグ特定
- 関連記事:pdb入門 – 対話的デバッグ手法