您可能已经注意到我对类似任务的最后一次查询。 我试图复制这个结构:
********************
********* *********
******** ********
******* *******
****** ******
***** *****
**** ****
*** ***
** **
* *
** **
*** ***
**** ****
***** *****
****** ******
******* *******
******** ********
********* *********
********************
如果您认为它由4个三角形组成 - 我可以单独生成每个角落,然后将它们放在另一个角落之下。 我不知道如何将它们放在一个更大的构造中。 我会尝试这个吗,还是我会通过解决它来解决问题,好像是一个单独的构造并按照我对单个三角形部分进行逐行处理?我只是假设将三角形变成更大的东西可能是一条捷径。
答案 0 :(得分:2)
这对我有用
w = 20
lines = []
for y in xrange(w / 2, 0, -1):
lines.append("".join(("*" * y, " " * (w - (y * 2)), "*" * y))
lines += reversed(lines[:-1])
for l in lines:
print l
如果您愿意,可以将其缩小:
lines = ["".join(("*" * y, " " * (w - (y * 2)), "*" * y)) for y in xrange(w / 2, 0, -1)]
print "\n".join(lines + lines[-2::-1])
输出w = 20:
********************
********* *********
******** ********
******* *******
****** ******
***** *****
**** ****
*** ***
** **
* *
** **
*** ***
**** ****
***** *****
****** ******
******* *******
******** ********
********* *********
********************
答案 1 :(得分:1)
我会把它视为一个不同的问题。如果您想象一个原点位于图形的中心,那么您只需要打印*
,其中"Manhattan distance"到该单元格的长度大于边缘长度的一半。例如,您可以执行以下操作:
import sys
r = 5
for y in range(-r,r+1):
for x in range(-r,r+1):
c = ' ' if (abs(x) + abs(y)) < r else '*'
sys.stdout.write(c)
print
......产生这个:
***********
***** *****
**** ****
*** ***
** **
* *
** **
*** ***
**** ****
***** *****
***********
答案 2 :(得分:1)
print '\n'.join('*' * (20 - i) + ' ' * (i * 2) + '*' * (20 - i) for i in range(0, 20))
print '\n'.join('*' * i + ' ' * (40 - i * 2) + '*' * i for i in range(0, 20))
答案 3 :(得分:0)
怎么样:
W = 10
for i in range(10):
this_str = "*"*(W-i)+" "*i
print this_str+this_str[::-1]
for i in range(9,-1,-1):
this_str = "*"*(W-i)+" "*i
print this_str+this_str[::-1]
工作时的同等压力。这是一个较短的版本,以跟上我所有的同胞:
W=10
lines = ["*"*(W-i)+" "*2*i+"*"*(W-i) for i in range(W)]
print "\n".join(lines + lines[-2::-1])
答案 4 :(得分:0)
如果你的导师正在寻找简单的循环,这可能会有所帮助(即使它可能为时已晚,而且它只能用于“w”值)
w = 20
for a in range (0,w/2):
print((w/2-a)*"*"+2*a*" "+(w/2-a)*"*")
for a in range (2,w/2+1):
print(a*"*"+(w-2*a)*" "+a*"*")
或者如果你想把变量“w”一起取出:
for a in range (0,10):
print((10-a)*"*"+2*a*" "+(10-a)*"*")
for a in range (2,11):
print(a*"*"+(20-2*a)*" "+a*"*")