整数网格

Grid of integers

我需要用代码生成的数字制作一个网格,但我不明白如何在列中对齐它们。 是否有打印参数或其他可以帮助我的参数?

#main()
a=0
b=0
for i in range(1, 13):
    a=a+1
    print("  ")
    b=b+1
    for f in range(1,13):
        print(f*b, end="  ")

我目前的输出:

我建议使用 python 的 f-strings:

for i in range(1, 13):
    print(''.join(f"{i*j: 4}" for j in range(1,13)))

这是输出:


   1   2   3   4   5   6   7   8   9  10  11  12
   2   4   6   8  10  12  14  16  18  20  22  24
   3   6   9  12  15  18  21  24  27  30  33  36
   4   8  12  16  20  24  28  32  36  40  44  48
   5  10  15  20  25  30  35  40  45  50  55  60
   6  12  18  24  30  36  42  48  54  60  66  72
   7  14  21  28  35  42  49  56  63  70  77  84
   8  16  24  32  40  48  56  64  72  80  88  96
   9  18  27  36  45  54  63  72  81  90  99 108
  10  20  30  40  50  60  70  80  90 100 110 120
  11  22  33  44  55  66  77  88  99 110 121 132
  12  24  36  48  60  72  84  96 108 120 132 144

最常见的形式是在大括号内使用几乎任意表达式。这可以包括字典值、函数调用等。以上用法指定冒号后的格式。 4前面的space表示填充字符应该是space,4表示整个表达式总共需要4个字符。有关详细信息,请查看 documentation.

考虑到每个网格单元格的宽度存储为 w,对于上面的代码片段来说,宽度为 4,可以使用

打印规则间隔的网格
w = 4
a, b = 0, 0
for i in range(1, 13):
    a, b = a+1, b+1
    for f in range(1, 13):
        print(('{:'+str(w)+'}').format(f*b), end='')
    print('')

它的输出是

   1   2   3   4   5   6   7   8   9  10  11  12
   2   4   6   8  10  12  14  16  18  20  22  24
   3   6   9  12  15  18  21  24  27  30  33  36
   4   8  12  16  20  24  28  32  36  40  44  48
   5  10  15  20  25  30  35  40  45  50  55  60
   6  12  18  24  30  36  42  48  54  60  66  72
   7  14  21  28  35  42  49  56  63  70  77  84
   8  16  24  32  40  48  56  64  72  80  88  96
   9  18  27  36  45  54  63  72  81  90  99 108
  10  20  30  40  50  60  70  80  90 100 110 120
  11  22  33  44  55  66  77  88  99 110 121 132
  12  24  36  48  60  72  84  96 108 120 132 144

您可以通过 {name} 在格式字符串中按名称引用传递给 str.format() 方法的关键字参数值。这是一个计算引用值(而不是常量)的示例:

mx = 12
w = len(str(mx*mx)) + 1
for b in range(1, mx+1):
    for f in range(1, mx+1):
        print(('{:{w}}').format(f*b, w=w), end='')
    print('')

输出:

   1   2   3   4   5   6   7   8   9  10  11  12
   2   4   6   8  10  12  14  16  18  20  22  24
   3   6   9  12  15  18  21  24  27  30  33  36
   4   8  12  16  20  24  28  32  36  40  44  48
   5  10  15  20  25  30  35  40  45  50  55  60
   6  12  18  24  30  36  42  48  54  60  66  72
   7  14  21  28  35  42  49  56  63  70  77  84
   8  16  24  32  40  48  56  64  72  80  88  96
   9  18  27  36  45  54  63  72  81  90  99 108
  10  20  30  40  50  60  70  80  90 100 110 120
  11  22  33  44  55  66  77  88  99 110 121 132
  12  24  36  48  60  72  84  96 108 120 132 144