繁体   English   中英

在python中绘制一个实心圆

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM