正确的对齐和更有效的代码方式

时间:2018-02-20 01:22:08

标签: python

我应该写一个导致这个的代码:

0 0 0 0 0 0 0 0 0 0
0 1 2 3 4 5 6 7 8 9
0 2 4 6 8 10 12 14 16 18
0 3 6 9 12 15 18 21 24 27
0 4 8 12 16 20 24 28 32 36
0 5 10 15 20 25 30 35 40 45
0 6 12 18 24 30 36 42 48 54
0 7 14 21 28 35 42 49 56 63
0 8 16 24 32 40 48 56 64 72
0 9 18 27 36 45 54 63 72 81

这是我的代码:

  for i in range(10):
    print("0", end="  ")
  print("")

  for i in range(0, 10):
    print(i, end="  ")
  print("")

 for i in range(10):
   i = i * 2
   print(i, end="  ")
 print("")

 for i in range(10):
     i = i * 3
     print(i, end="  ")
 print("")

for i in range(10):
    i = i * 4
    print(i, end="  ")
print("")

for i in range(10):
    i = i * 5
    print(i, end="  ")
print("")

for i in range(10):
    i = i * 6
    print(i, end="  ")
print("")

for i in range(10):
    i = i * 7
    print(i, end="  ")
print("")

for i in range(10):
    i = i * 8
    print(i, end="  ")
print("")

for i in range(10):
    i = i * 9
    print(i, end="  ")
print("")  

我刚编了一堆' for'声明,我觉得有一种方法可以编码我不必重复的地方。我想知道是否有更有效的方法来做到这一点?我如何得到正确的对齐?

谢谢。

1 个答案:

答案 0 :(得分:3)

您需要做的就是运行一个从0到9的循环。这个循环变量将是"乘数"。在每次迭代中,将乘数乘以数字0到9.如下所示,我已使用map + int.__mul__完成此操作,但还有其他(可能更快的方式,如果性能是您的担心这样做。

为了证明这一点,您可以使用str.format并使用正确的理由({:>3}.format(number))。

for i in range(10):
     print(*map('{:>3}'.format, map(i.__mul__, range(10))))

  0   0   0   0   0   0   0   0   0   0
  0   1   2   3   4   5   6   7   8   9
  0   2   4   6   8  10  12  14  16  18
  0   3   6   9  12  15  18  21  24  27
  0   4   8  12  16  20  24  28  32  36
  0   5  10  15  20  25  30  35  40  45
  0   6  12  18  24  30  36  42  48  54
  0   7  14  21  28  35  42  49  56  63
  0   8  16  24  32  40  48  56  64  72
  0   9  18  27  36  45  54  63  72  81