Python中的乘法表的对齐

时间:2015-10-05 17:20:16

标签: python string

我想写一个乘法表并且下面有代码,唯一的问题是当它打印出代码时,行和列不按照我希望的方式进行排列。我怎样才能使它们完美地排列,尽可能以最简单的方式处于适当的位置,这样我作为初学者就能理解。谢谢!

currentBox: '',

toggleBox: function(boxName) {
  this.set('currentBox', boxName);
},
boxOneIsActive: function() {
  return this.get('currentBox') === 'boxOne');
}.property('currentBox')
/* ... */

2 个答案:

答案 0 :(得分:3)

你应该使用str.format()并且右(或左)将结果证明为3长度(使用空格作为填充)。示例 -

for row in range(1, row+1):
    for col in range(1,columns+1):
        print("{: >3}".format(row * col), end="")
    print()

如果您想要包含更大的数字,可以从3增加长度。

格式说明 -

  

{: >3}字符:表示格式规范之前(如果在:之前使用字符串,则将其视为字段名称(将其作为关键字参数传递给.format()方法或是位置参数的位置。您还可以在:之前添加可选转化。Format String Syntax中对此进行了解释。

     在' '表示要填充的内容后,

:(空格)。

     

>表示正确对齐

     

3表示对齐的宽度。

您可以找到有关format specification mini language here的更多详细信息。

演示 -

>>> row = 5
>>> columns = 5
>>> for row in range(1, row+1):
...     for col in range(1,columns+1):
...         print("{: >3}".format(row * col), end="")
...     print()
...
  1  2  3  4  5
  2  4  6  8 10
  3  6  9 12 15
  4  8 12 16 20
  5 10 15 20 25

答案 1 :(得分:0)

另一种方法(将其保存到矩阵):

所以主要想法相同(使用 format() )。

rows = int(input("How many rows?: "))

columns = int(input("How many columns?: "))

mt = [[0 for x in range(rows)] for x in range(columns)] 

for row in range(1, rows + 1):
    for col in range(1, columns + 1):
        mt[row - 1][col - 1] = row * col

for el in mt:
    print ''.join("{: >4}".format(x) for x in el)