Edited at

Pythonのフォーマット文字列の桁数部を可変にする方法

More than 1 year has passed since last update.

Pythonのフォーマット文字列の桁数部を可変にする方法についてまとめます。


前提

1〜100までの数字を右揃えで表示したいとします。

  1

2
...
10
...
100

この場合、以下のように記述することで実現できます。

# 数字を出力

for i in range(100):
print('{:3d}'.format(i + 1))


本題

上の例で、表示する最大の数字を決め打ちできない場合に、フォーマット文字列を指定する方法としては、以下のようなものがあります。


方法1

import sys

# 数字の最大値 (標準入力より取得)
max_number = int(sys.stdin.readline())

# 数字の表示幅(最大値の桁数に合わせる)
width_number = len(str(max_number))

# 数字を出力
for i in range(max_number):
print('{number:{width}d}'.format(number=i + 1, width=width_number))


方法2 (Python 3.6以降)

import sys

# 数字の最大値 (標準入力より取得)
max_number = int(sys.stdin.readline())

# 数字の表示幅(最大値の桁数に合わせる)
width_number = len(str(max_number))

# 数字を出力
for number in range(max_number):
print(f'{number + 1:{width_number}d}')


参考文献