この記事ではPythonの print の書き方・使用方法について、基本的な内容から応用までを解説していきます。
それでは早速見ていきましょう。
printとは
まず、print
は表示したい内容を表示する関数です。丁度以下の様なイメージです。
実際に、下記のコードを実行してみましょう。
Hello world!
と表示がされ、期待通りの結果が得られます。
In[]
1 | print('Hello world!') |
Out[]
1 | Hello world! |
シングルコーテーション「’」とダブルコーテーション「”」の違い
シングルコーテーション「 ’
」とダブルコーテーション「 ”
」を使用した書き方がありますが、これらの実行結果に違いはありません。
そのため、使い分けを気にする必要はありません。
実際に print
で動かしてみましょう。どちらも同じ結果が得られる事が分かります。
In[]
1 2 | print('Hello world!') print("Hello world!") |
Out[]
1 2 | Hello world! Hello world! |
同じですね。
Python2系とPython3系のprintの使い方の違い
Python2系、3系というのはPythonのバージョンのことです。3系には3.6とか3.7などがあります。
2020年現在では、Python2系を使っている人はほとんどいないかもしれませんが、2系と3系の print
の書き方の違いをまとめておきます。
Python2系と3系のprintの使い方の違い
- Python2系:
print
文 なのでカッコ書きは不要 - Python3系:
print
関数 なのでカッコ書きが必要
下記の様に、出力すると文と関数の違いがコードとして出ます。
なお、「文」は if 文や for 文などのプログラム言語の記述ルールに対して、「関数」は引数を使って処理をして返り値を返すものとなります。
Out[]
1 2 3 4 | # Python2系 print 'Hello world!' # Python3系 print('Hello world!') |
printの使い方について
printはどの様な時に使うのか、またprintの基本的な使い方について解説します。
printの用途について
printの用途としては以下のものがあります。
printの用途のまとめ
- 処理がされたかどうかの確認
- エラーが起きた時にどの様なエラーが起きたのかを確認
- 処理において、どの様な状態か進捗を確認
スマートフォンのアプリの場合、間違った動作があるとメッセージが出てきますね。
同様にPythonの場合には、printでコマンドプロンプト、ターミナルや jupyter notebookへの出力でエラーメッセージを表示する必要があります。
以下の様なイメージです。
printの用途を以下に再度まとめます。
printの用途のまとめ
- コードの処理の確認
- コードエラーの確認
- コードの進捗の確認
では、各々について詳しく見ていきましょう。
コードの処理の確認
1つ目は「コード処理がきちんと実行されているのか」、また「その時、どのような変数の内容だったのか」など処理状態を確認するときに使います。
「変数の内容」すなわち、変数の値や型をprintで確認することで、正常な処理が行われているのかを確認します。
例えば、下記コードのように func_sample
を実行したとき、きちんと実行されているのか print
で確認します。
In[]
1 2 3 4 5 | def func_sample(a): # 何らかの処理 print('func_sampleが実行されました。') print(f'変数a:{a}') func_sample(1) |
Out[]
1 2 | func_sampleが実行されました。 変数a:1 |
また、別として下記のコードのような場合でもきちんと実行されているのかをprintで確認します。
In[]
1 2 3 4 5 | def add(a, b): print('addが処理されました。') print(a, b) return a+b add(1, 2) |
Out[]
1 2 | addが処理されました。 1 2 |
コードエラー確認
print
はコードエラー確認ではよく使用します。
try構文をまだ知らない方は何となく、エラーの表示をするのだということが分かればそれで十分です。
try 構文とは
try 構文とは、try except で囲った処理でエラーが出た場合に、エラー発生時の処理を書くための構文です。
例えば、ファイルを開いて処理したいのに、ファイルがなかったとか、割り算の計算をしたいが、分母が0で割れないなどの時に使用します。
使用するとエラーが発生するため、そのエラー時の処理を記述します。この例ではエラーの内容をprint
で表示します。
なお、Pythonの例外処理としてtry構文は以下の記事で詳しく解説していますので、参考にしてください。
Pythonの例外処理【try,except文の扱い方について】
続きを見る
下記例では、本来であれば計算する事が不可能な 1/0
を実行することで、「0では割れませんよ」というエラーを発生させて、それを print
で表示しています。
In[]
1 2 3 4 | try: a = 1/0 except Exception as e: print(e) |
Out[]
1 | division by zero |
コードの進捗確認
printはコードの進捗の確認のために頻用します。
コードの進捗確認でよく使われるのはtqdmというライブラリですが、自分でコードを書いて実装する場合もあります。
例えば、for文の処理が長い場合、その処理進捗が分かる方がコードの進捗確認に便利ですね。
実際に下記コードを実行してみてください。処理の進捗が表示されることが分かります。
In[]
1 2 3 4 5 | import time data = range(10) for i, d in enumerate(data): time.sleep(0.5) print(f'\r {i+1}/{len(data)} data:{d}', end='') |
Out[]
1 | 9/10 data:8 |
上記の意味としては、コードを実行すると 1/10 > 2/10 > 3/10 > 4/10..... 10/10と進捗が表示されますが、9/10 はその途中の表示になります。
以上が基本的なprintの使い方になります。
では実際にどうやって、print関数を使えば良いのか説明していきます。
print関数の使い方の基礎
print関数の使い方の基礎には以下のものがあります。
print関数の使い方の基礎
- 文字列の表示
- 数値・文字列の表示
- リストや辞書方の表示
文字列の表示
例えば、 ’Hello world’
の表示など、文字列の表示があります。
直接文字列を表示したい場合はシングルコーテーション、ダブルコーテーションで囲った文字列をprint関数に与えます。
具体的には以下の様になります。
In[]
1 | print('Hello print 基礎!') |
Out[]
1 | Hello print 基礎! |
数値、文字列の表示
print関数は変数に入っている値を表示する事が出来ます。
変数の内容を表示する場合には、シングル/ダブルコーテーションは不要です。
下記コードを実行してみましょう。文字列、数値データかかわらず、print
の ()
内を表示してくれる事が分かります。
In[]
1 2 3 4 5 6 | # 文字列 a = '文字列変数' print(a) # 数値 b = 100 print(b) |
Out[]
1 2 | 文字列変数 100 |
リストや辞書型の表示
print関数ではリスト型や辞書型を表示する事ができます。
Pythonの辞書の使い方については以下の記事を参照して下さい。
【python】辞書の作り方【基本から応用まで】
続きを見る
print関数にそのまま変数を入れると表示する事が出来ます。
In[]
1 2 3 4 5 6 | # リスト型 list_a = ['犬', 'ポチ' ,100] print(list_a) # 辞書型 dict_b = {'犬': 'ポチ', '猫': 'タマ'} print(dict_b) |
Out[]
1 2 | ['犬', 'ポチ', 100] {'犬': 'ポチ', '猫': 'タマ'} |
問題なく表示されているのが分かります。
また、このとき中に文字列、数値、他のオブジェクトが入っていても表示する事が可能です。
補足| printを使わずに変数の内容を表示させる。
print
を使わなくても、変数名をそのまま実行すると、内容が表示されます。
しかしprintを使う時と微妙に表現が変わります。
例えば、先ほどの’文字列変数’をprintの使用した場合、使用しない場合で実行すると下記のようになります。
In[]
1 2 3 | a = '文字列変数' print(a) a |
Out[]
1 2 | 文字列変数 '文字列変数' |
print
を使わない場合、a
の変数そのまま表示されて、”
がついて表示されているのが分かります。
また、改行文字である \n
を入れて実行してみましょう。
In[]
1 2 3 | a = '文字列\n変数' print(a) a |
Out[]
1 2 3 | 文字列 変数 '文字列\n変数' |
この様に、print
を使うと改行されますが、使わない場合はそのまま表示されます。
print
を使わずに表示させる場合、使って表示させる場合の違いを抑えておきましょう。
print関数の使い方の応用
基礎内容だけでは、冒頭で説明したような用途の表示ができない場合があるので、より詳しくみていきます。
print関数の使い方の応用としては以下のものがあります。
print関数の使い方の応用
- フォーマット
- 区切り文字
- 改行処理を無くす
- printの上書き
- file出力
では各々について詳しくみていきましょう。
フォーマット
文字列のフォーマットとは
文字列のフォーマットとは、数値や日付データをprint関数を使用する事で欲しい文字列の形に変更することです。
例えば、1
を ’00001’
にしたい場合は下記にようにコードを書きます。
In[]
1 2 | a = 1 print(f'{a} から {a:05d} にフォーマット') |
Out[]
1 | 1 から 00001 にフォーマット |
フォーマットの方法には具体的に % 形式
、format
、f-string
の3種類があります。
各々について詳しく確認していきましょう。
3種類のフォーマット方法について
フォーマットの方法は3種類あり、古い順(Pythonのバージョン)に %形式
、fomat
、f-string
があります。
f-string
は3.6以降に導入されたものです。またおすすめは、f-string
ですが、どれを使用しても構いません。
各々のフォーマット形式の書式と値の入力方法の違いは、以下の様にまとめる事ができます。
実際に、以下の様なコードを実行してみましょう。
- 値:
val (1)
- 書式:
d
以上の値と書式で、上から順に %形式
、format
、f-string
で処理してみます。
In[]
1 2 3 4 | val = 1 print('%d' % val) print('{:d}'.format(val)) print(f'{val:d}') |
Out[]
1 2 3 | 1 1 1 |
複数表示
先ほどは、1つの変数をフォーマットしましたが、次に print
で複数表示させましょう。
%形式
も、f-string
も変数を左から順番に入れますが、format
は、コロンの前に数字でどの変数を入れるか指定をする必要があります。
また、下図の様に %形式
はカッコ書きが増えます。
以下が複数表示をする場合のフォーマットの記載方法の違いです。
実際のコードが以下になります。実行して見比べてみましょう。
書式は d
で、変数の数を変更しています。( ※ d
:10進数)
In[]
1 2 3 4 5 6 | val1 = 1 val2 = 2 val3 = 3 print(('%d,%d,%d') % (val1, val2, val3)) print('{0:d},{1:d},{2:d}'.format(val1, val2, val3)) print(f'{val1:d},{val2:d},{val3:d}') |
Out[]
1 2 3 | 1,2,3 1,2,3 1,2,3 |
参考:型の種類について
- d:10進数
- f:小数点
- e:指数表記小数点
- s:文字列
数値と文字列については以下の記事を参考にして下さい。
【Python】数値と文字列について【初心者向け】
続きを見る
アライメント
次は文字のアライメントです。アライメントとは左、右、中央のどこに寄せるかを意味しています。
これは下記の記号を 05d のような「桁数」「型」の書式の前につけ、「アライメント」「桁数」「型」の順に表示します。
アライメントの表示方法
<
:左寄せ^
:中央>
:右寄せ
それぞれ、コードでみていきましょう。(注意:今回は、%表記では対応していません。)
In[]
1 2 3 4 | val1 = 10 # %表記はなし print('{0:<5d},{0:^5d},{0:>5d}'.format(val1, val1, val2, val2)) print(f'{val1:<5d},{val1:^5d},{val1:>5d}') |
Out[]
1 2 | 10 , 10 , 10 10 , 10 , 10 |
リスト, 辞書型の表示
最後にリスト型と辞書型をフォーマットして表示しましょう。
リスト型と辞書型ですが、format以外であれば、list_a[0]
、list_a[1]
など list_a [要素No]
という使い方をしますが、format
の場合では、要素Noは「要素No」:
書式と書式の前で指定します。
そのため、記載方法に少し違和感を感じられるかもしれません。
まず、リスト型から解説していきます。
format の場合、コロンの前の 0番目、1番目の後にリスト型の配列を意味する [0] [1] .. [n] を追加します。
そのほかは、%記法、f-string はそのまま配列の値を、 [ 配列No ] で指定しています。
リスト型フォーマットの表示の仕方
In[]
1 2 3 4 | list_a = [1, 2, 3] print(('%d,%d,%d') % (list_a[0], list_a[1], list_a[2])) print('{0[0]:d},{0[1]:d},{0[2]:d}'.format(list_a)) print(f'{list_a[0]:d},{list_a[1]:d},{list_a[2]:d}') |
Out[]
1 2 3 | 1,2,3 1,2,3 1,2,3 |
次は、辞書型のフォーマットの方法です。
formatの場合、コロンのまえの0番目、1番目の後に辞書型のキーを [key1] [key2] などを追加します。
シングル/ダブルコーテーションは不要です。
%記法
、f-string
はそのまま辞書のキー[ ‘x’
] を指定しています。
辞書型フォーマットの表示の仕方
print ではシングル/ダブルコーテーションを気にする必要はありませんが、f-string
ではフォーマットと辞書のキーで囲うものを分ける必要があります。
上から順に %形式
、format
、f-string
で処理してみます。
In[]
1 2 3 4 | dict_b = {'x': 1, 'y': 2, 'z': 3} print(('%d,%d,%d') % (dict_b['x'], dict_b['y'], dict_b['z'])) print('{0[x]:d},{0[y]:d},{0[z]:d}'.format(dict_b)) print(f'{dict_b["x"]:d},{dict_b["y"]:d},{dict_b["z"]:d}') |
Out[]
1 2 3 | 1,2,3 1,2,3 1,2,3 |
printを使用した文字の区切り方
printでは、引数を複数与えて変数をつなげることができます。
例えば、「This
」「is
」「2
」「pens
」と分けてprintに与えてみます。
In[]
1 | print('This', 'is', 2, 'pens') |
Out[]
1 | This is 2 pens |
スペースで区切られますね。このスペースは何も指定しない場合に入ります。
これを指定する場合には、sep=区切り文字
で指定します。スペースの代わりにアンダーバー にしてみましょう。
In[]
1 | print('This', 'is', 2, 'pens', sep='_') |
Out[]
1 | This_is_2_pens |
この様にアンダーバー が入ります。簡易的に表示したいときにはよく使いますので、覚えておきましょう。
改行処理を無くす方法
printを何度も実行すると、ちゃんと改行されてきましたね。
これは、何も指定しない場合は改行されるように最後に改行文字である「 \n
」指定されているからです。
これを、改行させたくない場合は、以下のようにend=”
を指定します。ちなみにend=’\n’
を入れれば普段通り改行されます。
end=’ \n_
’と他の文字を入れても良いです。
In[]
1 2 | print('This', 'is', end='') print(2, 'pens') |
Out[]
1 | This is2 pens |
printの上書き
進捗表示の箇所で解説した方法ですが、printは実行するたびに、内容を表示する事ができます。
進捗表示の場合、多くの文字が沢山表示されると見づらくなってしまうので、上書きする方法をとります。
具体的には print の冒頭にキャリッジリターン \r
を追加しつつ、改行させたくない場合に使用した end を end=”
として上書きします。
下記のように 1
, 2
, 3
とprintしてみましょう。上書きされて最終的に3だけが表示されます。
In[]
1 2 3 | print('\r 1', end='') print('\r 2', end='') print('\r 3', end='') |
Out[]
1 | 3 |
file出力
最後にfile出力ですが、私はこの機能を使ったことはありませんし、他の人が使っているのをみたことはないですが、機能としてあるので紹介します。
標準関数のopen
で保存するファイルをfとして宣言しつつ、それを file
の引数に渡します。
すると print
する内容をファイルに保存することができます。
In[]
1 2 3 4 | save_file_name = 'sample.txt' print_str = 'This is 2 pens' with open(save_file_name, 'w') as f: print(print_str, file=f) |
まとめ|Pythonのprint文の書き方【基本から応用まで】
Pythonの print
の使い方の基本的な内容から応用まで、ほぼ網羅的に解説させて頂きました。
print
は普段から当然の如く使用している構文ですが、ここで改めて知識としてまとめて頂ければと思います。
今回は以上となります。お疲れ様でした。