2014-09-18 178 views
3

我很困惑和沮喪,爲什麼我的程序沒有執行它應該的方式。我正嘗試在python ver 3上使用星號創建一個直角三角形。我使用了教科書中的確切代碼,並將其作爲一條直線出現。請賜教。使用Python創建一個直角三角形

例如

size = 7 

for row in range (size): 
    for col in range (row + 1): 
     print('*', end='') 
     print() 

導致

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

所有在一列

回答

7

在Python,壓痕計數。最後的print應與第二個for對齊。

size = 7 

for row in range (size): 
    for col in range (row + 1): 
     print('*', end='') 
    print() 

結果:

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

print功能實際上意味着 「移動到新線」。如果兩個print語句都以相同的縮進級別出現,則每次打印星號時,都會移至下一行。如果第二個printfor循環,你只會得到7個換行符。

+0

哇謝謝我一直在處理這個同樣的問題像一個一個半小時。 – 2014-09-18 19:43:23

1

作爲替代方案,您可以使用一個for循環!

>>> s='' 
>>> for i in range(7): 
... s+='*' 
... print (s) 
... 
* 
** 
*** 
**** 
***** 
****** 
******* 
+0

是的,雖然'print'需要括號,如果我們使用Python 3.X. – Kevin 2014-09-18 19:54:13

+0

是的,謝謝提醒! – Kasramvd 2014-09-18 19:55:27

1

它可能不是最可讀的解決方案,但如果你看中oneliners這是做這件事的一種方法:

print "\n".join(["".join(["*" for col in range(row+1)]) for row in range(7)]) 

編輯

只是爲了使它更短:

print "\n".join(["*" * (row+1) for row in range(7)])