我需要知道如何制作一个圆圈。 我现在有一个空心圆圈,但我需要它填补。 我无法弄清楚如何做到这一点。 有人知道如何从这个充满圆圈做出来。 我也受条件约束。
允许的关键字,运算符等是:if,elif,else,while,for ... in range,=,variables,values,**,*,/,+, - ,%,math.sqrt(),和,或者,不是,==,!=,<,< =,>,> =,+ =,def和return
但是,不允许在string和int上使用* -operator。所以例如''***''* 3是不允许的,但3 * 4是 有一个abs函数和一个连接线函数,有人知道替代它吗?
width, height = 11, 11
a, b = 5, 5
r = 5
EPSILON = 2.2
map_= [[' ' for x in range(width)]for y in range(height)]
for y in range(height):
for x in range(width):
if abs((x-a)**2 + (y-b)**2 - r**2) < EPSILON**2:
map_[y][x] = "#"
for line in map_:
print ' '.join(line)
答案 0 :(得分:3)
你几乎做对了。我认为这就是你要找的东西:
width, height = 11, 11
a, b = 5, 5
r = 5
EPSILON = 2.2
map_= [[' ' for x in range(width)]for y in range(height)]
for y in range(height):
for x in range(width):
if (x-a)**2 + (y-b)**2 <= (r**2 - EPSILON**2):
map_[y][x] = "#"
for line in map_:
print(' '.join(line))
古德勒克!
答案 1 :(得分:1)
疯狂的方式(在这些元素之间找到第一次出现和最后出现的索引以及y_mock
的填充列表:
#
def first_occ(l):
return l.index('#')
def last_occ(l):
return len(l) - 1 - l[::-1].index('#')
for i, el in enumerate(map_):
map_[i][first_occ(el):last_occ(el)] = ['#'] * (last_occ(el) - first_occ(el))
for line in map_:
print ' '.join(line)
是的,这不符合您的限制。
*
答案 2 :(得分:0)
更改条件,使其接受距离中心的距离小于或等于半径的所有坐标。
if (x-a)**2 + (y-b)**2 <= r**2: