python::format文が便利すぐる(2)
https://gyazo.com/470cd42141c06a962f7d46fb225b6faf
pythonのformat文は,C言語のprintf()とかsprintf()みたいなもので,
慣れたら超便利なシロモノなので,ぜひ活用したい.
こっちでも紹介してます.
特に,python3.6以降は.format()ではなくf"hoge {ver}"が使えて,さらに100倍便利.
ちょっとやってみよう.
◎文字列と数値をごっちゃにして出力する
code:python
num = 999
year = 2000
print("番号と年a:",titen_num,",", year)
print("番号と年b:"+str(titen_num)+","+str(year))
print(f"番号と年c:{titen_num},{year}")
a. はシンプルだが,変数間に半角空白が入る.整形はできない
b. は文字列として結合してから表示するのである程度の整形は可能.だが数値の型を文字列に変換するのが手間
c. format文では変数を{}で囲めば,型の種類関係なく"……"の中に記述できる
シンプルかつ見やすく,さらに下記のように拡張性がある
◎桁数を揃えて出力する
code:python
print("a.リスト"+str(i+1)+"番目の値:"+str(listi)) print(f"b.リスト{i+1:2d}番目の値:{listi:5.1f}") # .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桁と数えるらしい.
これをカバーするのはけっこうややこしい.