Python 3初学者 - 迭代三角形

时间:2014-04-11 18:38:21

标签: python loops geometry

我正在进行过去的测试,代码的输出是这样的:

Enter the height:
5
     5
    44
   333
  2222
 11111

我必须写下代码 - 到目前为止,我知道如何制作一个普通的三角形:

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

 *
 **
 ***
 ****

我的主要问题是,如果三角形迭代数字,我如何得到身体?

那么第一个三角形的代码是什么? 帮助将不胜感激:))

5 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您可以使用str:

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

答案 2 :(得分: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

是对的。

(虽然python试图削减数百万种做同样事情的方法,但仍有数千种方法)

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

答案 3 :(得分:0)

其他一些答案基本上是正确的,但是这一个答案可以证明你的三角形与原始输出相似。

def print_triangle(rows):
    for i in range(rows + 1):
        print((str(rows + 1-i)*i).rjust(rows))

答案 4 :(得分: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))