整数网格

时间:2019-02-23 18:17:53

标签: python python-3.7

我需要使用代码生成的数字来构成网格,但是我不理解如何将它们按列对齐。 是否有打印参数或其他可以帮助我解决问题的参数?

#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="  ")

此刻我的输出:

enter image description here

3 个答案:

答案 0 :(得分:3)

我建议使用python的f字符串:

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之前的空格表示填充字符应为空格,而数字4表示整个表达式应总共占4个字符。有关更多信息,请查看documentation

答案 1 :(得分:2)

考虑到每个网格单元格的宽度都存储为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

答案 2 :(得分:1)

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

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