目次
USAGE
metoro_area = [
('Tokyo', 'JP', 36.933, (35.689722, 139.691667)),
('Delhi NCR', 'IN', 21.935, (28.613889, 77.20889)),
('Mexico City', 'MX', 20.142, (19.43333, -99.133333)),
('New York-Newark', 'US', 20.104, (40.808611, -74.020386)),
('Sao Paulo', 'BR', 19.649, (-23.547778, -46.635833)),
]
print('{:15} | {:^9} | {:^9}'.format('', 'lat.', 'long.'))
fmt = '{:15} | {:9.4f} | {:9.4f}'
for name, cc, pop, (latitude, longitude) in metoro_area:
if longitude <= 0:
print(fmt.format(name, latitude, longitude))
数値の出力桁数を指定する
print(f'''year | sales
-----+-------------
2015 | {sales[0]:}
2016 | {sales[1]:}
2017 | {sales[2]:}
2018 | {sales[3]:}
''')
数値に桁区切りを入れる
print(f'''year | sales
-----+-------------
2015 | {sales[0]:,}
2016 | {sales[1]:,}
2017 | {sales[2]:,}
2018 | {sales[3]:,}
''')
表示する文字数を指定する
print(f'''year | sales
-----+-------------
2015 | {sales[0]:12,}
2016 | {sales[1]:12,}
2017 | {sales[2]:12,}
2018 | {sales[3]:12,}
''')
文字のアラインメント(位置揃え)
- 出力桁数を指定すると、自動で数値は右寄せ、文字列は左寄せになる

# 上記を応用すると
print(f'''{"year":^7}|{"sales":^12}
-----------------------
{2015:^7}|{sales[0]:12,d}
{2016:^7}|{sales[1]:12,d}
{2017:^7}|{sales[2]:12,d}
{2018:^7}|{sales[3]:12,d}
''')
ゼロパディング
- 桁数の前に0を付けると空白部分がゼロで埋まる
- 例)0-9桁、0-10桁
- 今回はあくまで表示上でゼロ埋めしているだけだが、文字列としてゼロ埋めしたい場合は以下を利用
zfill(参考HP)
value = 1000
print(f'{value}|{value:09}|')
print(f'{value}|{value:010}|')
# 1000|000001000|
# 1000|0000001000|print(f'|{"左寄せ":#<8}|{"中央寄せ":%^8}|{"右寄せ":_>8}|')
# |左寄せ#####|%%中央寄せ%%|_____右寄せ|参考)zfill
- 数値を桁合わせして表示したい場合
>>>'33'.zfill(6)
'000033'fromat と f文字列 での桁数表記
round等と異なり、丸めることはしてない。単に「見える部分、見え方」を変えているだけ。
num = 99.12345
| 結果 | format表記 | f文字列表記 ・ f'{}'と打鍵後、中身を入力・num=とすると、より分かりやすい |
| 99.1 | print('{:.1f}'.format(num)) | print(f'{num:.1f}') |
| 99.123 | print('{:.3f}'.format(num)) | print(f'{num:.3f}') |
| 99.12345 | print('{:.5f}'.format(num)) | print(f'{num:.5f}') |
| 99.1234500 | print('{:.7f}'.format(num)) | print(f'{num:.7f}') |
| __99.12345 | print('{:10}'.format(num))10文字分(小数点なども含む) | print(f'{num:10f}') |
| 0099.12345 | print('{:010}'.format(num)) | print(f'{num:010}') |
num = 10000.123
| 結果 | format表記 | f文字列表記 |
| 10000.123 | print('{}'.format(num)) | print(f'{num:}') |
| 10,000.123 | print('{:,}'.format(num)) | print(f'{num:,}') |
| 10,000.1 | print('{:,.1f}'.format(num)) | print(f'{num:,.1f}') |
| __10,000.1 | print('{:10,.1f}'.format(num)) | print(f'{num:10,.1f}') |
roundは四捨五入ではない
- roundは一般的な「四捨五入」ではないので注意!!
- 「偶数の丸め」(銀行丸め)になる
- 一般的な「四捨五入」としたい場合は
decimal等を使う - 参考HP:Pythonで小数・整数を四捨五入するroundとDecimal.quantize
f = 123.456
print(round(f))
# 123
print(type(round(f)))
# <class 'int'>
print(round(f, 1))
# 123.5
print(round(f, 2))
# 123.46
print(round(f, -1))
# 120.0
print(round(f, -2))
# 100.0
print(round(f, 0))
# 123.0
print(type(round(f, 0)))
# <class 'float'>