制作你的三角形。
def make_triangle(size, siblings, step):
return [['*' * (i-(step*sib)) + ' ' * ((size-(step*sib)) - ((i-(step*sib)) if (i-(step*sib) > 0) else 0)) for sib in xrange(siblings)] for i in xrange(1, size+1)]
输出:
>>> for i in make_triangle(9,3,3):
print ''.join(i)
*
**
***
**** *
***** **
****** ***
******* **** *
******** ***** **
******************
或者您可以将其全部保存在函数中,并且:
def make_triangle(size, siblings, step):
return '\n'.join([''.join(line) for line in [['*' * (i-(step*sib)) + ' ' * ((size-(step*sib)) - ((i-(step*sib)) if (i-(step*sib) > 0) else 0)) for sib in xrange(siblings)] for i in xrange(1, size+1)]])
>>> print make_triangle(9,3,3)
*
**
***
**** *
***** **
****** ***
******* **** *
******** ***** **
******************
如果你想要它们之间的空间:
def make_triangle(size, siblings, step):
return '\n'.join([' '.join(line) for line in [['*' * (i-(step*sib)) + ' ' * ((size-(step*sib)) - ((i-(step*sib)) if (i-(step*sib) > 0) else 0)) for sib in xrange(siblings)] for i in xrange(1, size+1)]])
>>> print make_triangle(9,3,3)
*
**
***
**** *
***** **
****** ***
******* **** *
******** ***** **
********* ****** ***
为了好玩(你可以看到非常好的功能):
>>> print make_triangle(13,5,2)
*
**
*** *
**** **
***** *** *
****** **** **
******* ***** *** *
******** ****** **** **
********* ******* ***** *** *
********** ******** ****** **** **
*********** ********* ******* ***** ***
************ ********** ******** ****** ****
************* *********** ********* ******* *****
更有趣:
>>> print make_triangle(13,5,2)[::-1]
***** ******* ********* *********** *************
**** ****** ******** ********** ************
*** ***** ******* ********* ***********
** **** ****** ******** **********
* *** ***** ******* *********
** **** ****** ********
* *** ***** *******
** **** ******
* *** *****
** ****
* ***
**
*
另外:对其工作原理的一些解释:
这是代码以更基本的形式执行的操作:
def make_triangle(size, siblings, step):
out_list = []
for i in xrange(1, size+1):
in_list = []
for sib in xrange(siblings):
if i-(step*sib) > 0:
in_list.append('*' * (i-(step*sib)) + ' ' * ((size-(step*sib)) - (i-(step*sib))))
else:
in_list.append('*' * (i-(step*sib)) + ' ' * (size-(step*sib))
out_list.append(in_list)
line_list = []
for in_list in out_list:
line_list.append(' '.join(in_list))
result = '\n'.join(line_list)
return result