2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Python個人的メモその5:出力編~強力なformatを使いこなす~

Last updated at Posted at 2019-06-08

地味に大事,出力

プログラムを書く上で大事なのは「入力を受け取ってそれに対して処理を行うまで」だと思ってませんか?
実は出力も結構大事です(第二回でデータ構造の方が大事とか言ってましたがあくまで主観的で相対的な話ですので悪しからず).

print

出力として最も使うことになるのがこれでしょう.言わずもがな,何らかの文字列を表示する関数です.

print_sample
print('something')  #something
print(100)  #100
a = 77
print(a)  #77

特に注意することはほとんど無いように思われますが,Javaなどでこういう書き方に慣れているとうっかりエラーを出します.
文字と数値を合体させるときは数値側をstr()できちんと文字に直してあげないといけません.

print_type_error
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での出力にとても便利な関数です.
文字列中の{}に,指定した値を入れることが出来ます.

print_format
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進表記があります.

format_option
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進数(大文字)

任意の文字で左・右詰めと中央寄せ

結構便利です.

l_r_just_center
print("69".ljust(15,'-')) # 69-------------  左詰め
print("69".center(15,'-'))# -------69------  中央寄せ
print("69".rjust(15,'-')) # -------------69  右詰め

追記:f文字列(フォーマット済み文字リテラル)※Python3.6以降

Python3.6からはこういった出力したい文字列の左にfを付けるだけで似たようなことが出来るようになりました.
波括弧の中には出力したい変数名を入れます.あとはformatと同様です.

f_strings
val = 123
print(f'val is {val:05}')  #val is 00123

(おまけ)終了コード指定で終了

時にはprintによる出力ではなく,「終了コード1を吐いて終了しろ」という処理が求められる場合があります.
その際はprint(1)してsys.exit()するのではなく,sys.exit(1)としましょう.

sys_exit
import sys

#処理

if something is wrong:
    sys.exit(1)  #SystemExit: 1

さいごに

formatを駆使して行儀のよい(?)出力を心がけましょう.出力の乱れはコードの乱れ(????)

2
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?