我需要编写一个输入非右Pascal三角形的代码,给定第n级作为输入,其中第一行是第0级。除此之外,在每一行的末尾必须指出水平。 这是我到目前为止所做的:
level = input('Please input nth level: ')
x = -1
y = 1
while x < level:
x = x+1
d = str(11**x)
while y < level:
y = y+1
print " ",
for m,n in enumerate(d):
print str(n) + " ",
while y < level:
y = y+1
print " ",
print x
输入3时,输出:
1 0
1 1 1
1 2 1 2
1 3 3 1 3
我想要的输出是:
1 0
1 1 1
1 2 1 2
1 3 3 1 3
答案 0 :(得分:0)
您可以使用str.format为您的字符串居中:
level = int(raw_input('Please input nth level: '))
N = level*2 + 5
for x in range(level+1):
d = ' '.join(str(11**x))
print('{d:^{N}} {x:>}'.format(N=N, d=d, x=x))
Please input nth level: 4
1 0
1 1 1
1 2 1 2
1 3 3 1 3
1 4 6 4 1 4
请注意,如果d = '1331'
,您可以使用' '.join(d)
在每个数字之间添加空格:
In [29]: d = '1331'
In [30]: ' '.join(d)
Out[30]: '1 3 3 1'
请注意,使用d = str(11**x)
是计算Pascal三角形中数字的有问题的方法,因为它不能为x&gt; = 5提供正确的数字。例如,
Please input nth level: 5
1 0
1 1 1
1 2 1 2
1 3 3 1 3
1 4 6 4 1 4
1 6 1 0 5 1 5 <-- Should be 1 5 10 10 5 1 !
您可能希望以不同的方式compute the digits in Pascal's triangle。