我有一个圆的半径和方程式y = int(math.sqrt(pow(radius, 2)-pow(i,2)))
(勾股定理)。我想要在一个特定范围内进行迭代,步长是16的倍数。以下是一个示例,以说明我的期望输出:
radius = 4
# Desired output: -4, -3.5, -3, -2.5, -2, -1.5, -1, -0.5, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4
# Actually output: -4, -3, -2, 1, 1, 2, 3, 4
我找到了一种使用列表推导式的解决方法。通过将值除以2,我能够实现所需的步长。以下是适用于半径为4的代码:
from itertools import chain
radius = 4
result = [x/2 for x in chain(range(-2*radius, 0), range(1, 2*radius+1))]
print("Length: ", len(result))
print("Values: ", result)
输出结果为16,符合预期。然而,这种方法并不具有普适性,对于其他半径值(例如radius = 5
)会失败。我正在寻找一种解决方案,允许我在特定步数内循环遍历一个范围。我该如何实现?
numpy.linspace(-radius, radius, radius * radius)
- kbunarjosqrt(radius * radius - x * x)
(使用平方根而不是int
),假设迭代变量为x
。这将给出圆的上半部分。 - Sci Prog