閉じる

Pythonのprint()で改行しない方法: end=”で連続出力

Pythonではprint()を使うと標準出力に文字が表示されますが、デフォルトでは末尾に改行が入ります。

この記事ではprint()で改行しないためのend引数の使い方を、初学者の方にもわかりやすいよう段階を踏んで解説します。

連続出力、区切り文字の調整、リアルタイム表示、さらにsys.stdout.write()まで丁寧に紹介します。

Pythonのprint()で改行しない基礎

printはデフォルトで改行する

print()は、引数の内容を表示したあと自動的に改行します。

これはend='\n'(改行文字)が既定値だからです。

Python
# デフォルトでは、print は末尾に改行を付ける(end='\n')
print("A")
print("B")
実行結果
A
B

end=”で改行しない

末尾の動作はend引数で変えられます。

改行を入れたくない場合はend=''とします。

Python
# 改行を入れずに連続して出力する
print("A", end='')  # 改行なし
print("B", end='')  # 改行なし
print("C")          # ここはデフォルトの改行あり(end='\n')
実行結果
ABC

end=’ ‘でスペース区切り

スペースで見やすく区切るにはend=' 'を使います。

数字や単語を横並びにしたいときに便利です。

Python
# スペースを入れながら横に並べる
print(1, end=' ')
print(2, end=' ')
print(3)  # 行の最後は改行
実行結果
1 2 3

end=’, ‘でカンマ区切り

CSV風に並べたい場合はend=', 'が役立ちます。

見た目を整えつつ、最後は改行するなど柔軟に制御できます。

Python
# カンマ+スペースで区切る
print("apple", end=', ')
print("banana", end=', ')
print("cherry")  # 最後に改行
実行結果
apple, banana, cherry

よく使うend値と効果は次のとおりです。

end の値行末の動作用途の例
'\n'(既定)改行する通常の1行出力
''何も付けない完全に連結したい
' 'スペース1つ読みやすい横並び
', 'カンマ+スペースCSV風の見た目

連続出力の実例とパターン

ループで横に並べて表示

ループ内でend=''end=' 'を使うと、数値や文字列を1行に並べられます。

Python
# 0 から 4 までを横に並べて表示
for i in range(5):
    print(i, end='')  # 改行なし
print()  # ループ後に1回だけ改行して行を確定
実行結果
01234

最後だけ改行する

一連の出力の最後だけ改行したいときは、ループ内で条件分岐してendを切り替えます。

Python
# 要素の間はカンマとスペース、最後の要素だけ改行にする
items = ["A", "B", "C", "D"]
for idx, x in enumerate(items):
    is_last = (idx == len(items) - 1)
    print(x, end='\n' if is_last else ', ')
実行結果
A, B, C, D

リアルタイム表示はflush=True

ターミナルや一部の環境ではバッファリングで画面反映が遅れることがあります。

逐次表示したいならflush=Trueを指定します。

進捗表示などで効果的です。

Python
# ドットを0.2秒間隔で即時表示し、最後に done と出す
import time

for _ in range(5):
    print('.', end='', flush=True)  # flush=True でバッファを都度流す
    time.sleep(0.2)
print(' done')  # 行を閉じる
実行結果
..... done

endとsepの違いと組み合わせ

sepで値の間の区切りを変える

sep引数どうしの間に入る区切り文字を決めます。

既定値は' '(半角スペース)です。

Python
# デフォルトの 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

endで行の終わりを制御する

end行末に付ける文字列です。

改行するか、区切りを付けて次の出力につなぐかを決められます。

Python
# 行末に「; 」を付け、次の print につなげる
print(1, 2, 3, end='; ')
print("next")
実行結果
1 2 3; next

sepとendを同時に指定する

sependは同時に指定できます。

どちらも文字列なので自由に組み合わせられます。

Python
# 値の間はカンマ+スペース、行末はピリオドで終える
print(10, 20, 30, sep=', ', end='.')
# 次の行を続けて出力しても、先ほどの行はピリオドで閉じている
print(" done")
実行結果
10, 20, 30. done

要点のまとめは次の表が把握しやすいです。

引数作用する場所既定値典型例
sep値と値の間' 'sep=', ' でリスト風出力
end行の末尾'\n'end='' で改行なし、end='; ' で接続

応用: print以外で改行しない出力

sys.stdout.writeを使う

sys.stdout.write()素の書き込みを行い、自動改行や区切りの挿入を一切しません

必要なら自分で'\n'を書き、リアルタイム反映したい場合はflush()を呼びます。

Python
# sys.stdout.write は改行を自動で付けない
import sys
sys.stdout.write("Hello")
sys.stdout.write("World")
sys.stdout.write("\n")      # 自分で改行を書く
# 必要に応じて即時反映
sys.stdout.flush()
実行結果
HelloWorld

writeとprintの違い

両者の役割は似ていますが、使い勝手と既定動作に違いがあります。

用途に応じて選ぶとよいでしょう。

項目printsys.stdout.write
区切りの自動挿入あり(sep)なし
行末の制御endで可文字列に含める必要あり
改行の既定あり('\n')なし
フラッシュflush=Trueで可sys.stdout.flush()を呼ぶ
返り値None書き込んだ文字数(int)
可読性高い(初心者向け)低め(細かく制御したいとき)
注意

一部のIDEやノートブック環境では出力がバッファリングされ、表示が遅れることがあります。

リアルタイム性が重要ならprint(..., flush=True)またはsys.stdout.flush()を併用してください。

まとめ

改行を入れないprintの鍵はend引数です。

end=''で完全連結、end=' 'end=', 'で読みやすく整形し、必要に応じてflush=Trueで即時表示にできます。

複数値の区切りはsep、行末はendと役割を分けて覚えると混乱しません。

さらに細かな制御が必要なときはsys.stdout.write()も選択肢になります。

まずは小さなスクリプトで実際に試し、望む出力が得られるまでsependを自在に使い分けられるようになると良いです。

この記事を書いた人
エーテリア編集部
エーテリア編集部

人気のPythonを初めて学ぶ方向けに、文法の基本から小さな自動化まで、実際に手を動かして理解できる記事を書いています。

クラウドSSLサイトシールは安心の証です。

URLをコピーしました!