2014-04-11 61 views
-4

我通過過去的測試和代碼的輸出會是這樣的:Python 3的初級 - 迭代三角

Enter the height: 
5 
    5 
    44 
    333 
    2222 
11111 

我要記下代碼 - 到目前爲止,我知道如何使一個正常的三角形與:

for i in range(5): 
print('*'*i) 

* 
** 
*** 
**** 

我的主要問題是如何獲得身體,如果三角形迭代數字?

那麼第一個三角形的代碼是什麼? 幫助,將不勝感激:)

+3

_Going通過過去TEST_:你真的應該採取一些揣摩如何做到這一點。 – devnull

+0

你是對的 - 我正在懶惰。對不起,下次會做得更好:) – user3490976

+0

也謝謝大家的幫忙。 – user3490976

回答

1

該代碼,這幾乎是一樣的,你只需要改變的打印每個字符的次數,並更改*您正在打印到一個數字。

for i in range(5): 
    print(str(5-i) * (i+1)) 

這產生:

5  
44 
333 
2222 
11111 

,使其在你的榜樣右對齊一樣,只是使用字符串乘上一個空格字符。

for i in range(5): 
    print(' ' * (4-i) + str(5-i) * (i+1)) 

這將讓你:

5 
    44 
    333 
2222 
11111 
0

您可以使用STR:

for i in range(5): 
print(str(i)*i) 
+2

這不是第一個三角形的代碼。 – s16h

0

格式化字符串&間距與外部陣列和否定的變量。

def height(num): 
    rangenum=range(num+1) 
    for i in rangenum: 
    print(("%"+str(num)+"s")%(i*str(rangenum[-i]))) 

print("%(spacing as a number)s"%(a string)) 

返回

(spacing as a number)-(a string) 

例如:

print("%10s"%"this") 

回報:

"  this" 

邊注:

%-(a number)s 

是正確的。

(儘管蟒蛇試圖削減數以百萬計的方式做同樣的事情,仍然有成千上萬)

https://docs.python.org/2/tutorial/inputoutput.html

0

一些其他的答案已經基本上是正確的,但是這一次右對齊你的三角形像原始輸出一樣。

def print_triangle(rows): 
    for i in range(rows + 1): 
     print((str(rows + 1-i)*i).rjust(rows)) 
0
height = 5 
for i in range(height, 0, -1): 
    empty_chars = ' ' * (i - 1) 
    filler_chars = str(i) * (height - i + 1) 
    print('{}{}'.format(empty_chars, filler_chars))