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

时间:2017-02-18 05:28:38

标签: python

我试图在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循环,但我怎样才能得到左侧?任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:1)

这个怎么样:

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 for for循环

     

用于左侧数字的循环

输出:

          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 

答案 1 :(得分:1)

尝试使用^对齐选项。

  

^强制字段在可用空间内居中。

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))

答案 2 :(得分:0)

我不懂Python。但是你可以解释一下可以提供帮助的概念。

只要不打印数字,就应该打印空白。

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

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

我希望它会有所帮助。