====== Python 関数: print ======
===== 概要 =====
* Python で端末画面などに文字を表示するための関数
===== 使い方 =====
print(MESSAGE, end = "改行文字", sep = "区切り文字")
* ''MESSAGE'': 画面に出力する文字列
* ''end = "改行文字"'':
* 指定しなくても有効になっており、改行文字には改行コードが指定されている
* 改行文字を "" (空文字) にすることで、改行を抑制できる
* ''sep = "区切り文字"'':
* 指定しなくても有効になっており、区切り文字にはスペースが指定されている
* 区切り文字は、''MESSAGE'' をスペースで区切って複数指定する際に入る文字である
===== Tips =====
==== C 言語の printf のようにフォーマットを指定する方法 ====
* 2 種類 (2017/02/22 時点) の方法が可能である
* **%演算子を使う方法**\\ print("%s %f %d" % (foo, hoge, fuga))
* 文字列と変数群を % で区切って指定する
* 古くからある方法であり、近年廃止も検討されているらしい
* **str.format() 関数を使う方法**\\ print("{0} {1} {a}".format("foo", "hoge", a = 20))
* %演算子を使う方法と似ているが、format 関数を使うのと、フォーマット形式が異なる
* フォーマットの基本
* ''{0}, {1}, {2}, ...'': positional 変数
* format() 関数内で指定する変数の順番 (インデックス) の番号と ''{}'' 内の番号が対応している
* printf の使い方に近い
* ''{a}, {hoge}, ...'': optional 変数
* format() 関数内で変数を指定し、その変数名と ''{}'' 内の文字が対応している
* フォーマットの型を指定する場合
* それぞれのフォーマットの後ろに '':'' とそれぞれのフォーマット型の記号を付ける\\ a = 20
print("{0:f} {0:e}".format(a))
20.000000 2.000000e+01
* 何も指定しない場合は、自動的に ''s'' (文字列) になっている
* 浮動小数点型や指数型の場合は ''f'' や ''e'' の前に ''.桁数'' を付けることで、小数点以下の桁数を調整できる
* 空白で調整する場合
* それぞれのフォーマットの後ろに ''^''(中央揃え) や ''>'' (右寄せ)、''<'' (左寄せ) を付け、全体の文字数を指定する\\ a = 20
print("|{0:^10}|".format(a))
| 20 |
print("|{0:>10}|".format(a))
| 20|
print("|{0:<10}|".format(a))
|20 |
* 空白以外の文字 (0 や ! など) で埋める場合は、'':'' の直後に入れたい文字を入力する\\ a = 20
print("|{0:*<10}|".format(a))
|20********|
print("|{0:!<10}|".format(a))
|20!!!!!!!!|
* 混ぜるとこんな感じ\\ a = 20
print("|{0:!<10.3f}|".format(a))
|20.000!!!!|
* 参考サイト:
* [[http://postd.cc/new-string-formatting-in-python/ | Pythonの新しい文字列フォーマット : %記号、str.format()から文字列補間へ | プログラミング | POSTD]]
===== その他 =====
==== Python 2.x と Python3.x の違い ====
* 2.x までは print **文**で、print の後は文字列を指定できた (print "str")
* デフォルトは str の後に改行が入る
* 改行をしない場合は、末尾に「,」を付ける
* 複数の値をカンマで区切ると、値の間にスペースが入った状態で出力される
* 3.x は、print **関数**となり、括弧が必要になった (print("str"))
* 複雑な表現が可能になった? (end とか sep とか)
* end: 末尾に加える文字を指定する (例: print("str", end="") -> 改行しないで出力)
* sep: 値をカンマで区切って出力する際、値の間の文字列を指定する (例: print(hoge,foo,sep=",") -> 「,」で区切られて出力される)
* 参考サイト: [[http://d.hatena.ne.jp/hekyou/20111224/p1 | Python3のprintを使ってみよう! - へきょのーと]]
{{tag>プログラミング}}