试图使用for for循环解决数字金字塔



我正在尝试在python中编码这个数字

      1
    2 1 2
  3 2 1 2 3 
4 3 2 1 2 3 4

,但我只能像这样的右侧

1
1 2
1 2 3 
1 2 3 4

使用此代码:

def main ():

  # create pattern 1
  for i in range (1, 7,+1):
    for j in range (1, i + 1):
      print (j, end = " ")
    print ()
  print ()

main()

似乎最简单的方法是用于循环,但是我怎么能左侧呢?任何帮助都将不胜感激。

怎么样:

for i in range(1,7,+1):
    for l in range(7-i,1,-1):
        print("  ",end="")
    for k in range(i,1,-1):
        print(k,end=" ")
    for j in range(1,i+1):
        print(j, end= " ")
    print()
print()

我刚刚添加了2个循环

l用于空间的循环

k用于左侧数字的循环

输出:

          1 
        2 1 2 
      3 2 1 2 3 
    4 3 2 1 2 3 4 
  5 4 3 2 1 2 3 4 5 
6 5 4 3 2 1 2 3 4 5 6 

只是尝试使用^对齐选项。

^迫使该场以可用空间为中心。

num = 10
width = len(" ".join(map(str, range(num, 0, -1))) + " ".join(map(str, range(2, num + 1)))) + 1
print("{0:^{1}}".format("1", width))
for i in range(2, num + 1):
    part1 = " ".join(map(str, range(i, 0, -1)))
    part2 = " ".join(map(str, range(2, i + 1)))
    print("{0:^{1}}".format(" ".join((part1, part2)), width))

我不知道python。但是您可以解释可以帮助的概念。

您应该打印空白,只要它们不打印数字。

金字塔的一行由空白,相反顺序的数字输出,数字输出(第一个)和空白输出组成。

例如,如果一个数字的限制为4,则第一行将有3个空白,1个反向输出,0个正常输出和3个空白输出。

我希望它会有所帮助。

相关内容

最新更新