地味に大事,出力
プログラムを書く上で大事なのは「入力を受け取ってそれに対して処理を行うまで」だと思ってませんか?
実は出力も結構大事です(第二回でデータ構造の方が大事とか言ってましたがあくまで主観的で相対的な話ですので悪しからず).
出力として最も使うことになるのがこれでしょう.言わずもがな,何らかの文字列を表示する関数です.
print('something') #something
print(100) #100
a = 77
print(a) #77
特に注意することはほとんど無いように思われますが,Javaなどでこういう書き方に慣れているとうっかりエラーを出します.
文字と数値を合体させるときは数値側をstr()
できちんと文字に直してあげないといけません.
a = 22
print('a is ' + a) #TypeError: Can't convert 'int' object to str implicitly
print('a is '+ str(a)) #a is 22
format
printでの出力にとても便利な関数です.
文字列中の{}に,指定した値を入れることが出来ます.
a, b, c = 10,20,30
#formatで指定した引数のうち,どれを使うかインデックスで指定
#省略すると指定した順に勝手に入る
print('a is {0}, b is {1}, c is {2}'.format(a, b, c)) #a is 10, b is 20, c is 30
#「:」で右側にオプションを付けられる(左側はインデックス)
# >4 で最低文字幅を4に
print('a is {0:>4}, b is {1:>4}, c is {2:>4}'.format(a, b, c)) #a is 10, b is 20, c is 30
# 0>4で足りない部分を0埋め
print('a is {0:0>4}, b is {1:0>4}, c is {2:0>4}'.format(a, b, c)) #a is 0010, b is 0020, c is 0030
なお,オプションには小数点以下の桁数指定や2, 8, 16進表記があります.
a = 1.4142
print(a) #1.4142
print("{:.2f}".format(a)) #1.41 小数第二位に丸める
b = 18782
print("{:b}".format(b)) #100100101011110 2進数
print("{:o}".format(b)) #44536 8進数
print("{:x}".format(b)) #495e 16進数(小文字)
print("{:X}".format(b)) #495E 16進数(大文字)
任意の文字で左・右詰めと中央寄せ
結構便利です.
print("69".ljust(15,'-')) # 69------------- 左詰め
print("69".center(15,'-'))# -------69------ 中央寄せ
print("69".rjust(15,'-')) # -------------69 右詰め
追記:f文字列(フォーマット済み文字リテラル)※Python3.6以降
Python3.6からはこういった出力したい文字列の左にfを付けるだけで似たようなことが出来るようになりました.
波括弧の中には出力したい変数名を入れます.あとはformatと同様です.
val = 123
print(f'val is {val:05}') #val is 00123
(おまけ)終了コード指定で終了
時にはprintによる出力ではなく,「終了コード1を吐いて終了しろ」という処理が求められる場合があります.
その際はprint(1)
してsys.exit()
するのではなく,sys.exit(1)
としましょう.
import sys
#処理
if something is wrong:
sys.exit(1) #SystemExit: 1
さいごに
formatを駆使して行儀のよい(?)出力を心がけましょう.出力の乱れはコードの乱れ(????).