在python中绘制一个实心圆圈

时间:2015-10-08 16:59:58

标签: python draw geometry

我需要知道如何制作一个圆圈。 我现在有一个空心圆圈,但我需要它填补。 我无法弄清楚如何做到这一点。 有人知道如何从这个充满圆圈做出来。 我也受条件约束。

允许的关键字,运算符等是: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)

3 个答案:

答案 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: