我如何结合这两个for循环来打印一个完整的三角形

时间:2016-11-29 06:17:28

标签: python-2.7

我想通过组合这两个半三角形来打印一个完整的三角形星号。

for g in range (11,0,-1):
    print(g * ' ' + (11-g) * '*')

for i in range(11,0,-1):
    print ('*'*(11-i)+ ' '*i)

1 个答案:

答案 0 :(得分:0)

python format mini language提供了一种强大的机制来控制事物的显示方式

特别是,您正在寻找一个*居中^的三角形,并用填充。对于尺寸为2n-1的三角形,三角形的宽度为n,例如对于n=5:格式规范为' ^9' 每行*的数量为2i-1 for i in 1..n

所以把这一切放在一起你得到:

>>> n = 5
>>> for i in range(1, n+1):
...     print(format('*'*(2*i-1), ' ^'+str(2*n-1)))
    *    
   ***   
  *****  
 ******* 
*********

或者作为单个表达式(使用变量替换):

print('\n'.join('{: ^{width}}'.format('*'*(2*i-1), width=2*n-1) for i in range(1, n+1)))