まず、写真は必要ありません。4 つのスペースをインデントするだけで (または {} アイコンを使用して)、出力をテキストとして表示できるはずです。
Please enter the width of the table:4
0 0 0 0 0
0 1 2 3 4
0 2 4 6 8
0 3 6 9 12
0 4 8 12 16
問題は、各数値が同じ幅になると想定していることです。これは 3x3 まで機能します。これは、すべてが 1 文字幅であるためですが、5x5 の場合、1 文字の数字もあれば 2 文字の数字もあります (もちろん、10x10 ではさらに悪化します)。
これを修正する簡単な方法は、各セルを強制的に同じ幅にすることです。
まず、必要な最大サイズを計算する必要があります。しかし、それは簡単です: のサイズですwidth*width
。
次に、その数の文字を強制的に使用する方法を知る必要があります。Python にはこれを行う方法がいくつかあります。昔ながらのフィールド指定子を使用してそれを行う方法を示しますが、これを新しいスタイルのフォーマット文字列に変換する方法を検討する必要があります。(これが宿題である場合、Python 3 を教えている人はおそらく古いスタイルのフィールド仕様を使用することであなたを格下げするでしょう。それがあなた自身の独学のためだけである場合は、両方の方法でそれを行う方法を考え出す価値があります。)'%*d'
静的仕様を構築する代わりに、可変幅フォーマット仕様 ( ) を使用するように変換する方法を検討する必要があります'%4d'
。(nneonneoの答えはその手がかりを与えるはずです。)
width = int(input("Please enter the width of the table:"))
def print_times_table(width):
row = 0
col = 0
fieldspec = '%' + str(len(str(width * width))) + 'd'
width += 1
while row < width:
col = 0
while col < width:
print(fieldspec % (row*col,), ' ', end="")
col += 1
print("\n", end='')
row +=1
print_times_table(width)
これで次のようになります。
Please enter the width of the table:4
0 0 0 0 0
0 1 2 3 4
0 2 4 6 8
0 3 6 9 12
0 4 8 12 16