2015-10-08 144 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("")