このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Python入門】print関数で改行を制御(endパラメータ)

print関数で改行を制御(endパラメータ)

 ここでは、Pythonの print 関数に備わっている便利な機能、すなわち end パラメータを使って出力後の改行を制御する方法について、順を追って解説していきます。通常、print 関数は出力後に自動的に改行しますが、end パラメータを利用することで、改行の代わりに任意の文字列を挿入でき、出力形式を自由に整形することが可能です。

プログラムのダウンロード

 「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。

1.end パラメータの基本的な役割

 print 関数はデフォルトで出力末尾に改行文字(\n)を追加します。これを変更するには、end パラメータに挿入したい文字列を指定します。以下の表は、end の基本的な使い方をまとめたものです。

デフォルトの動作設定例説明
改行(\n)が出力されるprint('Hello')出力後に自動で改行する
カンマと空白を挿入print('Hello', end=', ')出力後に「, 」を追加し、改行せずに次の出力へ繋げる
空文字を指定print('Hello', end='')改行や空白を追加せずに、連続して出力する

サンプルプログラム

print('Hello') # 改行(\n)が出力される
print('Hello', end=', ') # カンマと空白を挿入
print('Hello', end='') # 改行や空白を追加せずに、連続して出力する
print('Python')

実行結果

Hello
Hello, HelloPython

2.具体例①:カンマ区切りで表示

整数の2乗を1行に並べて表示する例です。

for i in range(1, 6):
    print(i*i, end=', ')

 このコードでは、1から5までの整数の2乗を計算し、各値の後に「, 」を付加して横一列に出力します。ポイントは以下の通りです。

  • range(1, 6) は1~5の整数を生成
  • i*i によって各整数の2乗を計算
  • end=', ' により、各出力後にカンマと空白が挿入され、最後にも余計な「, 」が表示される点に注意

サンプルプログラム

for i in range(1, 6):
    print(i*i, end=', ')

実行結果

1, 4, 9, 16, 25,

3.具体例②:改行や空白なしで連続表示

改行や空白を一切入れずに、値を連続して表示する方法です。

for i in range(1, 6):
    print(i*i, end='')

この場合、1の2乗~5の2乗が隙間なく連続して「1491625」として出力されます。

設定説明出力例
end=''出力後に何も挿入しない1491625

サンプルプログラム

for i in range(1, 6):
    print(i*i, end='')

実行結果

1491625

4.具体例③:特定の文字列で区切って表示

改行の代わりに任意の文字列(ここでは「->」)を挿入して表示する例です。

for i in range(1, 6):
    print(i*i, end='->')

この場合、各出力が「->」で区切られて表示され、末尾にも「->」が付加されます。

設定説明出力例
end='->'各出力の末尾に「->」を挿入して改行を抑制1->4->9->16->25->

サンプルプログラム

for i in range(1, 6):
    print(i*i, end='->')

実行結果

1->4->9->16->25->

5.末尾の区切り文字を省略する工夫

 末尾に余計な区切り文字が不要な場合、join メソッドとリスト内包表記、str 関数を組み合わせる方法があります。

print('->'.join([str(i*i) for i in range(1, 6)]))

 このコードは、1から5までの各2乗の数値を文字列に変換し、'->' で連結して表示するため、末尾に不要な「->」が付かず、以下のように整形されます。

処理説明出力例
リスト内包表記 [str(i*i) for i in range(1, 6)]1~5の各2乗の値を文字列に変換したリストを作成["1", "4", "9", "16", "25"]
'->'.join(...)リスト内の文字列を「->」で連結し、余計な区切りを付けない1->4->9->16->25

サンプルプログラム

print('->'.join([str(i*i) for i in range(1, 6)]))

実行結果

1->4->9->16->25

まとめ

 print 関数の end パラメータを使うと、出力後にデフォルトで挿入される改行を任意の文字列に置き換えることができ、値を横一列に並べたり、連続して表示したり、任意の区切り文字で整形することができます。これにより、短いコードで複数の値を見やすく出力でき、必要に応じて末尾の区切り文字を省略するための工夫も可能です。ぜひ、さまざまな例を実行して、自分のプログラムで出力結果を自在にコントロールしてみてください。