Python | print() 関数

Python
スポンサーリンク

print()応用編を詳しくまとめます。
変数を使った出力、フォーマット文字列(f-string / format / 旧式 %)、リスト・辞書の見やすい表示、ファイル出力、進捗表示など、実用的なテクニックを例題つきで解説します。コードはそのままコピーして実行できます。

応用①:変数を使った出力(基本復習+便利ワザ)

name = "花子"
age = 12
price = 1234.5678
Python
  • シンプル(カンマで複数引数)
print("名前:", name, "年齢:", age)   # 自動でスペースが入る
Python
  • *(アンパック)でリストの中身を渡す
items = ["りんご", "みかん", "バナナ"]
print(*items)            # りんご みかん バナナ
print(*items, sep=", ")  # りんご, みかん, バナナ
Python
  • 変数名と値を自動で表示(Python 3.8+)
x = 10
print(f"{x=}")  # 出力例: x=10
Python

応用②:フォーマット文字列(見やすく整形する方法)

1) f-string(推奨、読みやすい)

name = "花子"
age = 12
price = 1234.5678

print(f"{name}さんは{age}歳です。")
print(f"合計: {price:.2f} 円")      # 小数点以下2桁
print(f"{price:,.2f} 円")         # 千の位にカンマ
print(f"{'商品':<10}{'単価':>8}")  # 左寄せ/右寄せ(見出し)
print(f"{'りんご':<10}{price:8.2f}") # 幅指定・揃え
Python

書式の意味(抜粋)

  • :.2f → 小数点以下 2 桁の浮動小数点
  • :, → 千区切りコンマ
  • :>8 :<10 :^10 → 右寄せ・左寄せ・中央寄せ(幅 8/10)

2) str.format()(互換性あり)

print("{}さんは{}歳です。".format(name, age))
print("{:>10} {:,.2f}".format("金額", price))
# 辞書を展開
person = {"name":"太郎","age":20}
print("{name}{age}歳です。".format(**person))
Python

3) 旧スタイル %(古いコードを読むと出てくる)

print("%s%d歳です。%.1f円" % (name, age, price))
Python

応用③:リスト・辞書を“見やすく”出力する

そのまま print(list_or_dict) でも十分だが、可読性を上げる方法を覚えておくと便利。

1) join と map を組み合わせて表示(リストの要素が文字列でない場合)

nums = [1,2,3,4]
print(" ".join(map(str, nums)))  # "1 2 3 4"
Python

2) pprint(pretty print)で辞書を整形表示

from pprint import pprint
data = {"name":"太郎","scores":[100,95,80],"info":{"age":20,"city":"Tokyo"}}
pprint(data)
Python

3) json.dumps で Unicode 文字をきれいに、インデント付きで出す(日本語をそのまま表示)

import json
print(json.dumps(data, ensure_ascii=False, indent=2))
Python

4) ループで表形式に整形

people = [{"name":"太郎","age":20},{"name":"花子","age":19}]
print(f"{'名前':<6} {'年齢':>3}")
for p in people:
    print(f"{p['name']:<6} {p['age']:>3}")
Python

応用④:ファイルへ出力(file=)

print()file 引数でファイルオブジェクトに書き込めます。

with open("out.txt", "w", encoding="utf-8") as f:
    print("ファイルに書き込むテキスト", file=f)

# または既存ファイルへ追記
with open("out.txt", "a", encoding="utf-8") as f:
    print("追加の行", file=f)
Python

応用⑤:即時反映・バッファ制御(flush=True)

長時間かかる処理で進行状況を出すときなど:

import time
for i in range(3):
    print(i, end=" ", flush=True)
    time.sleep(1)
# flush=True で即表示される(通常はバッファに残る可能性がある)
Python

応用⑥:プログレス(進捗)表示・同じ行を上書きする方法

ターミナルで同じ行を更新して進捗表示を作る例:

import time
for i in range(101):
    print(f"\rProgress: {i}%", end="", flush=True)
    time.sleep(0.02)
print()  # 最後に改行
Python

\r(キャリッジリターン)で行頭に戻し、end=""flush=True で即時上書き表示。

応用⑦:オブジェクトの表示(__str__ と __repr__)

  • print(obj)obj.__str__() を呼ぼうとし、存在しなければ __repr__() を使う。
  • デバッグ時は repr(obj)!r フォーマットが便利:
class Point:
    def __repr__(self):
        return "Point(1,2)"

p = Point()
print(p)          # Point(1,2)
print(f"{p!r}")   # repr 表示
Python

応用⑧:ログ代わりに print を使うときの注意

学習段階は print() で大丈夫ですが、プロジェクトが大きくなったら logging モジュールを使いましょう(ログレベル/ファイル出力/フォーマットの管理が楽になります)。

応用⑨:表(テーブル)をきれいに出す(簡易)

小さなテーブルならフォーマットで揃える:

rows = [("商品", "単価", "個数"), ("りんご", 120, 3), ("みかん", 80, 5)]
for name, price, cnt in rows:
    print(f"{name:<8}{price:>6}{cnt:>4}個")
Python

練習問題(解答付き)

短めの問題で確認してみましょう。

Q1

items = ["A","B","C"]A|B|C のように表示するコードを書け。

A1

items = ["A","B","C"]
print("|".join(items))
# または
print(*items, sep="|")
Python

Q2

data = {"name":"太郎","age":20,"scores":[100,90]} を日本語で読みやすくインデント付き JSON 表示するコードを書け。

A2

import json
print(json.dumps(data, ensure_ascii=False, indent=2))
Python

Q3

price = 1234567.891,234,567.89 のように千区切りで小数点2桁にして表示する f-string を書け。

A3

price = 1234567.89
print(f"{price:,.2f}")
Python

Q4

リスト nums = [1,2,3,4]1 2 3 4 と表示する方法を 2 通り書け。

A4

nums = [1,2,3,4]
print(*nums)                     # 方法1
print(" ".join(map(str, nums)))  # 方法2
Python

Q5

進捗表示の簡単なサンプル(0〜100%)を書け(1%ごとに 0.01 秒待つ)。

A5

import time
for i in range(101):
    print(f"\rProgress: {i}%", end="", flush=True)
    time.sleep(0.01)
print()
Python

よくあるつまずき・ヒント

  • join は文字列同士にしか使えない → map(str, ...) で変換する。
  • print(a, b)print(str(a) + str(b)) は挙動が異なる(前者はスペース有り、後者は連結)。
  • f-string 内のフォーマット指定({var:,.2f})は強力。慣れておくと見栄えの良い出力が簡単に作れる。
  • 多量のログは print ではなく logging を検討する(後でフィルタや出力先を切り替えやすい)。
Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました