在不更改任何其他内容的情况下,您可以在两个范围内进行循环:
for row in range(1,5)+range(4,0,-1):
print "." * (row -1) + row * "*" + (16 - row * 4) * "." + row * "*"
由于您可以将列表添加在一起:
In [8]: range(1,5)
Out[8]: [1, 2, 3, 4]
In [9]: range(4,0,-1)
Out[9]: [4, 3, 2, 1]
In [10]: range(1,5) + range(4,0,-1)
Out[10]: [1, 2, 3, 4, 4, 3, 2, 1]
顺便说一句,您可以使用空格去掉前导点:
for row in range(1,5)+range(4,0,-1):
print " " * (row -1) + row * "*" + (16 - row * 4) * "." + row * "*"
*............*
**........**
***....***
********
********
***....***
**........**
*............*
更优雅的做法可能是构建一个字符串列表:
X = []
for row in range(1,5):
X.append(" " * (row -1) + row * "*" + (16 - row * 4) * "." + row * "*")
现在,通过反向复制上半部分来添加下半部分:
X = X + list(reversed(X))
但是当我们打印它时,我们会看到一个列表:
print X
#['*............*', ' **........**', ' ***....***', ' ********', ' ********', ' ***....***', ' **........**', '*............*']
所以我们可以将它们与换行符连接在一起:
print '\n'.join(X)
*............*
**........**
***....***
********
********
***....***
**........**
*............*