我想写一个乘法表并且下面有代码,唯一的问题是当它打印出代码时,行和列不按照我希望的方式进行排列。我怎样才能使它们完美地排列,尽可能以最简单的方式处于适当的位置,这样我作为初学者就能理解。谢谢!
currentBox: '',
toggleBox: function(boxName) {
this.set('currentBox', boxName);
},
boxOneIsActive: function() {
return this.get('currentBox') === 'boxOne');
}.property('currentBox')
/* ... */
答案 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)