print('''
a b a**b
1 2 1
2 3 8
3 4 81
4 5 1024
5 6 15625\n''')
好吧,在上面的代码中,如果你看第三列,数字是通过让我们说左边距来对齐的。但是,在下面的代码中,通过右边距对齐。如何让下面的代码看起来像上面的代码?另外,我所说的问题是左/右对齐吗?我不知道该怎么称呼它。我还添加了我为for循环获得的输出。
a = 1
b = 2
i = 0
for i in range(0,5):
print("%10i%9i%9i" %(a,b, (a**b)))
a+=1
b+=1
'''output:
1 2 1
2 3 8
3 4 81
4 5 1024
5 6 15625'''
答案 0 :(得分:1)
%
运算符的简单修复:使用%
格式化字符串,如果在-
之后放置%
,则表示左对齐。对于您的代码,这看起来像:
a = 1
b = 2
i = 0
for i in range(0,5):
print("%10i%9i%-9i" %(a,b, (a**b)))
a+=1
b+=1
'''output:
1 21
2 38
3 481
4 51024
5 615625'''
正如你所看到的,这个左对齐直到前一列,最便宜的修复是添加九个空格,但你也可以只用下面的九个空格格式化一个空字符串(虽然有字符偏移, 8空格填充可能更正确):
a = 1
b = 2
i = 0
for i in range(0,5):
print("%10i%9i%9s%-9i" %(a,b,"", (a**b)))
a+=1
b+=1
'''output:
1 2 1
2 3 8
3 4 81
4 5 1024
5 6 15625'''
str.format
模块通常,我喜欢使用string.format
module。它比上一个例子更强大,更简洁:
a = 1
i = 0
b = 2
for i in range(0,5):
print("{0:<10}{1:<9}{2:<9}".format(a,b,(a**b)))
a+=1
b+=1
'''output:
1 2 1
2 3 8
3 4 81
4 5 1024
5 6 15625 '''