如何打印此图案

时间:2019-06-05 18:37:07

标签: python-3.x

要打印以下给出的图案 用户程序应输入的行数需要与任何行数兼容 例如,如果用户输入5行

12345
2   4
3   3
4   2
54321

我尝试使用嵌套的for循环

row=5
col=5
n=1
z=5
for x in range(1,row+1):
    for y in range(1,col+1):
         if (x == 1):
             print(n,end="")
             n=n+1
         else:
             print(end="")
    print("")
    for y in range(1,col+1):
        if (x == 1):
             print(z,end="")
             z=z-1
        else:
             print(end="")
    print("")

我希望如此

12345
2   4
3   3
4   2
54321

我得到的输出是这个

12345
54321

2 个答案:

答案 0 :(得分:1)

如果您需要循环,则可以这样做:

row = int(input('enter number of rows: '))

spaces = 0

for i in range(1, row + 1):
  print(i, end='')
  spaces += len(str(i))

print()

for i in range(2, row):
  print(i, ' ' * (spaces - 4), row - i + 1)

for i in range(row, 0, -1):
  print(i, end='')

print()

row = 5的输出:

12345
2   4
3   3
4   2
54321

row = 8的输出:

12345678
2      7
3      6
4      5
5      4
6      3
7      2
87654321

row = 10的输出:

12345678910
2         9
3         8
4         7
5         6
6         5
7         4
8         3
9         2
10987654321

答案 1 :(得分:0)

无需实际编写代码,就可以使用两个圆形数组。 1,2,3,4,51,2,3,4,5。一转左和一右。对于第一次和最后一次迭代,您将打印整个数组以及相反的数组。对于中间的元素,仅打印第一个和最后一个元素。

`1,2,3,4,5` now rotate both `2,3,4,5,1` and `5,1,2,3,4`
`2,x,x,x,4` print [-1],[0], rotate again `3,4,5,1,2` and `4,5,1,2,3`
`3,x,x,x,3` print [-1],[0], rotate again `4,5,1,2,3` and `3,4,5,1,2`
`3,x,x,x,3` print [-1],[0], rotate again `5,1,2,3,4` and `2,3,4,5,1`
`4,x,x,x,2` print [-1],[0]
`5,4,3,2,1` print whole inverse