python::format文が便利すぐる(2)
#python
#2020/8/6 #2020/8
https://gyazo.com/470cd42141c06a962f7d46fb225b6faf
pythonのformat文は,C言語のprintf()とかsprintf()みたいなもので,
慣れたら超便利なシロモノなので,ぜひ活用したい.
ちょっと前の記事:python::format文がめっちゃ便利!(1)
こっちでも紹介してます.
特に,python3.6以降は.format()ではなくf"hoge {ver}"が使えて,さらに100倍便利.
Pythonでformat関数を使う方法【初心者向け】 | TechAcademyマガジン
Pythonのprintで桁数(数値や小数点以下など)を指定して出力する方法 | HEADBOOST
Python, formatで書式変換(0埋め、指数表記、16進数など) | note.nkmk.me
ちょっとやってみよう.
◎文字列と数値をごっちゃにして出力する
code:python
num = 999
year = 2000
#a.別々の変数として並べてprint
print("番号と年a:",titen_num,",", year)
#b.文字列を結合してprint
print("番号と年b:"+str(titen_num)+","+str(year))
#c.format文(短縮形)で
print(f"番号と年c:{titen_num},{year}")
a. はシンプルだが,変数間に半角空白が入る.整形はできない
b. は文字列として結合してから表示するのである程度の整形は可能.だが数値の型を文字列に変換するのが手間
c. format文では変数を{}で囲めば,型の種類関係なく"……"の中に記述できる
シンプルかつ見やすく,さらに下記のように拡張性がある
◎桁数を揃えて出力する
code:python
list = 113.6, 94.0, 77.8885
for i in range(len(list)): #listの要素数だけ回す
#文字列に結合してprint
print("a.リスト"+str(i+1)+"番目の値:"+str(listi))
for i in range(len(list)): #listの要素数だけ回す
#f文:番目は2桁にあわせて右寄せ,値は5桁幅で小数点1桁揃え
print(f"b.リスト{i+1:2d}番目の値:{listi:5.1f}")
for i in range(len(list)): #listの要素数だけ回す
# .1の次のfを略すと,0.0e指定(指数表記)になる
print(f"c.リスト{i+1:2d}番目の値:{listi:.1}")
出力はこうなる ▼▼
code:text
>> %Run test.py
a.リスト1番目の値:113.6
a.リスト2番目の値:94.0
a.リスト3番目の値:77.8885
b.リスト 1番目の値:113.60
b.リスト 2番目の値: 94.00
b.リスト 3番目の値: 77.89
c.リスト01番目の値:1e+02
c.リスト02番目の値:9e+01
c.リスト03番目の値:8e+01
>>
たくさん数字を並べる時には,b.が美しいですな.
▼文字列の桁数合わせには注意:全角半角同じ扱いされる!
文字列ももちろん,桁あわせも右寄せ,中央寄せも可能.
code:python
print(f"{'これは右寄せ.でも':>30}")
print(f"{'半角12345と':*>30}")
print(f"{'全角12345は':*>30}")
print(f"{'違う!(中寄せ)':^30}")
出力は ▼▼
code:text
これは右寄せ.でも
**********************半角12345と
**********************全角12345は
違う!(中寄せ)
pythonは全角1文字を1桁と数えるらしい.
これをカバーするのはけっこうややこしい.
これは先の記事:python::format文がめっちゃ便利!(1)で触れている.