我想制作这个“钻石”:
********************
********* *********
******** ********
******* *******
****** ******
***** *****
**** ****
*** ***
** **
* *
* *
** **
*** ***
**** ****
***** *****
****** ******
******* *******
******** ********
********* *********
********************
我可以制作使用while循环制作钻石的4个三角形:
x = 10
while 0 < x < 11:
print '%10s' % ('*' * x),
x = x - 1
print
x = 0
while x < 11:
print '%10s' % ('*' * x),
x = x + 1
print
x = 10
while 0 < x < 11:
print '%0s' % ('*' * x),
x = x - 1
print
x = 0
while x < 11:
print '%0s' % ('*' * x),
x = x + 1
print
我可以将这4个循环组合在一起制作钻石吗?或者我必须采用不同的方式吗?
答案 0 :(得分:6)
我建议你使用字符串格式化(你可以试验参数):
a = range(0,20,2)+range(20,-1, -2)
for i in a:
print '{:*^30}'.format(' '*i)
[OUTPUT]
******************************
************** **************
************* *************
************ ************
*********** ***********
********** **********
********* *********
******** ********
******* *******
****** ******
***** *****
****** ******
******* *******
******** ********
********* *********
********** **********
*********** ***********
************ ************
************* *************
************** **************
******************************
上面代码的作用是首先创建一个列表a
,其中包含每行的空格数。然后,字符串格式化为长度30
列表中的每个元素打印一行({:*^30}
的30个部分,其居中^
,并在*
的任一侧填充。希望有所帮助。
for i in range(1,20,2)+range(19,-1, -2):print '{:*^30}'.format(' '*i)
答案 1 :(得分:1)
一种非常简单的方法是使用两个循环:
def diamond(n):
for i in range(n, 0, -1):
print '*' * i + (' ' * (n-i) * 2) + '*' * i
for i in range(1, n+1):
print '*' * i + (' ' * (n-i) * 2) + '*' * i