[英]Drawing a filled circle in python
我需要知道如何做一个实心圆。 我现在有一个空心圆圈,但我需要填充它。 我不知道该怎么做。 有人知道如何从中形成一个实心圆吗? 我也受条件约束。
允许的关键字,运算符等为:if,elif,else,while,……对于范围内的=,变量,值,**,*,/,+,-,%,math.sqrt()和或,而不是==,!=,<,<=,>,> =,+ =,def和return
但是,不允许在字符串和整数上使用*运算符。 因此,例如“ ***” * 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)
你几乎是对的。 我认为这是您要寻找的:
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))
祝好运!
疯狂的方式(查找第一次出现和最后一次出现的索引,并在这些元素之间用#
填充列表:
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)
*
是的,这不符合您的限制。
# # # # #
# # # # # # #
# # # # # # # # #
# # # # # # # # # # #
# # # # # # # # # # #
# # # # # # # # # # #
# # # # # # # # # # #
# # # # # # # # # # #
# # # # # # # # #
# # # # # # #
# # # # #
更改您的条件,使其接受到中心的距离小于或等于半径的所有坐标。
if (x-a)**2 + (y-b)**2 <= r**2:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.