我用PyCharm编写了一段代码,运行之后,PyCharm和Python3只显示了六列。
layout = "{0:>2} {1:>2} {2:>2} {3:>2} {4:>2} {5:>2} {6:>2} {7:>2} {8:>2} {9:>2} {10:>2} {11:>2}"
def multiple_table2():
for i in range (1, 11):
print(layout.format(i, "\t", i*2, "\t", i*3, "\t", i*4, "\t", i*5, "\t", i*6, "\t", i*7, "\t", i*8, "\t", i*9, "\t", i*10, "\t", i*11, "\t", i*12))
multiple_table2()我认为,这是正确的。有人能解释一下吗,请问问题出在哪里?
发布于 2015-06-07 09:23:18
您正在将12个以上的值放入列中。前12个是6个数字和6个制表符字符。这些"\t"字符串中的每一个也都是一个值;您实际上是在生成:
' 1 \t 2 \t 3 \t 4 \t 5 \t 6 \t'作为字符串;注意之间的空格!这是一个小于2个字符的值的空格,以及来自模板本身的另一个空格。
您不需要将这些制表符字符设置为您的格式;您已经将插槽分隔开了:
print(layout.format(i, i*2, i*3, i*4, i*5, i*6, i*7, i*8, i*9, i*10, i*11, i*12))现在,您为12个插槽传递12个参数。
如果您真的想在选项卡之间添加选项卡,则应该将这些选项卡放在layout字符串中:
layout = '{0:>2}\t{1:>2}\t{2:>2}\t{3:>2}\t{4:>2}\t{5:>2}\t{6:>2}\t{7:>2}\t{8:>2}\t{9:>2}\t{10:>2}\t{11:>2}'Python为您提供了避免输入的工具。print()已经在不同的参数之间放置了空格。与生成器表达式中的另一个循环一起,您可以格式化所有这些数字,而无需写出所有*multiplier参数:
for i in range (1, 11):
print(*(format(i * m, '>2') for m in range(1, 13)))如果您仍然需要在中间而不是空格中设置制表符,可以告诉print()使用sep参数作为分隔符:
for i in range (1, 11):
print(*(format(i * m, '>2') for m in range(1, 13)), sep='\t')考虑到,由于您正在乘以11和12,您将得到不适合于两个字符的数字:
>>> for i in range (1, 11):
... print(*(format(i * m, '>2') for m in range(1, 13)))
...
1 2 3 4 5 6 7 8 9 10 11 12
2 4 6 8 10 12 14 16 18 20 22 24
3 6 9 12 15 18 21 24 27 30 33 36
4 8 12 16 20 24 28 32 36 40 44 48
5 10 15 20 25 30 35 40 45 50 55 60
6 12 18 24 30 36 42 48 54 60 66 72
7 14 21 28 35 42 49 56 63 70 77 84
8 16 24 32 40 48 56 64 72 80 88 96
9 18 27 36 45 54 63 72 81 90 99 108
10 20 30 40 50 60 70 80 90 100 110 120https://stackoverflow.com/questions/30691920
复制相似问题