2015-10-08 141 views
2

我试图写一个程序,它看起来像这样比如说,如果输入的号码是6,或类似的东西输出应该是这样的:蟒蛇嵌套循环输出艺术和reverseal

  * 
     ** 
     *** 
     **** 
    ***** 
    ****** 
    ***** 
     **** 
     *** 
     ** 
     * 

但是当我这样做的时候,就像我被告知的那样,特别是这种方式,因为这是一个同学告诉我要做的事情。 :

n = int(input("Enter a value for n: ")) 
    for i in range(1, n + 1): 
     for j in range(n): 
      if n - j > i: 
       print(" ", end = " ") 
      else: 
       print("*", end = " ") 
    print("") 

    for i in range(1, n): 
     for j in range(n): 
      if n - j < i: 
       print(" ", end = " ") 
      else: 
       print("*", end = " ") 
    print("") 

我得到:

  * 
     ** 
     *** 
     **** 
    ***** 
    ****** 
    ***** 
    **** 
    *** 
    ** 
    * 

我在做什么错?请告诉我如何让它正确排队,我真的很感激,如果有人可以帮助我,所以我可以学会自己做这件事,请帮助我...

+1

如果有任何答案,回答您的问题,请单击该答案左侧的复选标记接受它。 –

回答

2

你的循环是一个因此我简化了一些:

n = int(input("Enter a value for n: ")) 

for x in range(n): 
    out = '' 
    for y in range(n-x): 
     out = out +' ' 
    for y in range(x): 
     out = out +'*' 
    print(out) 
for x in range(n): 
    out = '' 
    for y in range(x): 
     out = out +' ' 
    for y in range(n-x): 
     out = out +'*' 
    print(out) 

享受!

2

如果您的任务需要您完全按照您发布的内容编写代码,Austin Kootz的答案就是要走的路。

然而,这样做的更加simplifed方法是使用ljust

n = 6 

for x in range(n - 1, 0, -1): 
    print ''.ljust(x, ' ') + '*'.ljust(n - x, '*') 

for x in range(n): 
    print ''.ljust(x, ' ') + '*'.ljust(n - x, '*') 
0

要在第二组循环的什么是采取的行数(从1开始计数)和打印许多空间(” “),然后为该行的其余部分打印星号(”*“)。所以如果我是行号和j列号(并且索引从0开始),则应该在“i”上打印“”,否则在“*”上打印。这给出:

# The top part of the pyramid 
for i in range(1, n + 1): 
    for j in range(n): 
     if n - j > i: 
      print(" ", end = " ") 
     else: 
      print("*", end = " ") 
    print("") 
# The bottom half of the pyramid 
for i in range(n): 
    for j in range(n): 
     # Print spaces in the beginning of the row 
     # (while the column number is less than the row number) 
     if j < i + 1: 
      print(" ", end = " ") 
     # Print asterisks for the rest of the row 
     else: 
      print("*", end = " ") 
    print("")