为什么math.sqrt(r ** 2 - (x-h)** 2)+ k返回ValueError:math域错误

时间:2016-09-08 03:35:28

标签: python math

def drawCircle(h, k, r):
    #(x-h)^2 + (y-k)^2 = r^2
    for x in range(screen.Width):
        y = (math.sqrt(r**2 - (x-h)**2) + k)
        if y % 1 == 0:
            screen.Set(x, int(y), "X")

drawCircle(0, 0, 5)

screen是一个简单的控制台渲染器库,我写的是将项放在2D数组中,左上角最左边是(0,0)

1 个答案:

答案 0 :(得分:3)

我的猜测是,你sqrt的parens结果在某些时候最终会变为负数。如果有,当您尝试取该数字的平方根时,将会出现您看到的错误。

要确认这一点,请尝试将r**2 - (x-h)**2保存到变量并在执行sqrt之前将其打印出来。