2017-09-23 18 views
-2

這個程序應該打印一個n×n的三角形圖案是這樣的:三角nxn的圖案程序

N = 6

* * * * * * 
. * * * * * 
. . * * * * 
. . . * * * 
. . . . * * 
. . . . . * 

但是我正在此:

N = 6

* * * * * * 
. . . . . . 
. . . . . . 
. . . . . . 
. . . . . . 
. . . . . . 

我的錯誤在哪裏?

import sys 

n = int(sys.argv[1]) 

def triangle(n): 
    for i in range(n): 
     if i == 0: 
      for k in range(n): 
       print('*', end=' ') 
      print() 
     if i > 0: 
      for k in range(n): 
       print('.', end=' ') 
      print() 

triangle(n) 
+1

也許你應該使用*鴨調試*:解釋你的橡皮鴨你的程序如何工作。 –

+0

也許這會幫助你https://stackoverflow.com/questions/26352412/python-print-a-triangular-pattern-of-asterisks –

+0

@CristianOlaru它並沒有真正幫助我:/ –

回答

0

目前正在打印星星只有當你在第一線和點每隔一行。您需要打印點和星星,每行增加的點數,降低星星:

def triangle(n): 
    for i in range(n): 
     for k in range(i): 
      print('.', end=' ') 

     for k in range(n - i): 
      print('*', end=' ') 

     print() 
+0

這與我的(早期的)答案具有完全相同的代碼。 –

+0

最初你在'for'循環中有不同的計數器,因此你也編輯了,我也想試着給出一個更好的解釋,因爲你也沒有。 – DobromirM

1

而不是檢查循環索引只是用它來打印點數。然後打印n - i明星,例如:

def triangle(n): 
    for i in range(n): 
     for k in range(i): 
      print('.', end=' ')  
     for k in range(n-i): 
      print('*', end=' ') 
     print() 

或者只是用乘法運算符:

def triangle(n): 
    for i in range(n): 
     print(*["."]*i + ["*"]*(n-i), sep=" ") 
+0

我做到了這一點,它的工作原理但是,我有一個問題。爲什麼第一次循環跳過第一次,第二次循環呢? –

+0

第一次它是'range(0)',它是一個空的迭代器(即'list(range(0))== []') –

0

試試這個 它的很多更簡單

count = 0 
count2 = 5 
while count2 >= 1: 
    for i in range(count): 
     print(".", end = " ") 
    for i in range(count2): 
     print("*", end = " ") 
    print() 
    count = count + 1 
    count2 = count2 - 1