我在遵循引用时有这个奇怪的问题,这段代码:
for r in range(10):
for c in range(r):
print "",
for c in range(10-r):
print c,
print ""
应打印出类似这样的内容:
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6
0 1 2 3 4 5
0 1 2 3 4
0 1 2 3
0 1 2
0 1
0
但相反,我得到了这个:
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6
0 1 2 3 4 5
0 1 2 3 4
0 1 2 3
0 1 2
0 1
0
任何人都可以向我解释右侧缩进的原因,看起来很简单,但我不知道我能做些什么来解决这个问题?
答案 0 :(得分:1)
您错误地打印了前导空格。您正在打印只打印一个空格的空引号(""
)。执行print c
后,打印c
后会打印一个空格。您应该打印" "
来获得正确的间距。这是一个非常微妙的事情需要注意。
for r in range(10):
for c in range(r):
print " ", #print it here
for c in range(10-r):
print c,
print ""
答案 1 :(得分:1)
如果你想格式化它,最好让Python为你做,而不是计算显式和隐藏的隐式空格。有关{:^19}
的含义以及更多内容,请参阅string formatting docs。
for i in range(10):
nums = ' '.join(str(x) for x in range(10 - i))
#print '{:^19}'.format(nums) # reproduces your "broken" code
print '{:>19}'.format(nums) # your desired output
有时使用print函数是一个很好的选择,因为您可以通过将关键字参数end
设置为空字符串来消除隐藏空格:
from __future__ import print_function # must be at the top of the file.
# ...
print(x, end='')
答案 2 :(得分:0)
你根本就没有在左侧创建足够的缩进(打印时没有右侧缩进)。
对于每个新行,您希望通过两个空格来增加缩进,因为您在上面的行上添加了一个数字+空格。 "",
会自动添加一个空格(这就是为什么数字之间有空格)。由于您需要添加两个,只需在引号中添加一个空格,如下所示:" ",
。
额外的空格填充了上面一行中的数字空格。 "",
中的逗号只填充数字之间的空格。澄清一下:" ",
使用与c,
相同的空格,两个字符,而"",
仅使用一个字符。
以下是使用小修补程序的代码:
for r in range(10):
for c in range(r):
print " ", # added a whitespace here for correct indent
for c in range(10-r):
print c,
print ""