首页 > 解决方案 > 为 n 行打印以下模式。例如。N = 5 1 1 12 21 123 321 1234 4321 1234554321

问题描述

我正在做这个问题,但我写的代码给出了相同的输出,但间距不同。

这是我写的:

n = int(input())

for i in range(1,n+1):
    for j in range(1,i+1):
        print(j,end='')
    for j in range(0,2*n-2*i):
        print(" ",end='')
    for j in range(i,0,-1):
        print(j,end='')

输出似乎与实际预期的有所不同。

我的输出:

1        112      21123    3211234  43211234554321

预期输出:

1        1
12      21
123    321
1234  4321
1234554321

正如我所看到的,在第一个 for 循环的每次迭代中,我们都不会跳入新行。为什么会这样?谢谢您的帮助。

标签: python

解决方案


您缺少在外部 for 循环末尾打印的换行符。

具有列表理解的替代解决方案:

>>> n=5
>>> for i in range(1,n):
...     print(
...         ''.join([str(x) for x in range(1,i+1)])
...         + ' '*2*(n-i-1)
...         + ''.join([str(x) for x in range(i,0,-1)])
...     )
... 
1      1
12    21
123  321
12344321
>>>

推荐阅读