Python - TypeError:无法将复数转换为float

时间:2016-11-07 03:12:05

标签: python types typeerror

我需要一些学校项目代码的帮助。

import math

v = 9.412
g = 9.81
y = -1.5

def radToDeg(x):
    return((x / math.pi) * 180)

def sqrt(x):
    return(x ** 0.5)

def CalculateAngle(x):
    return(radToDeg(math.atan(((v ** 2) + (sqrt((v ** 4) - (g * ((g * x ** 2) + (2 * y * v ** 2)))))) / (g * x))))

print(CalculateAngle(90.0297))

当我运行程序时,收到错误:

Traceback (most recent call last):
  File "C:/Users/Owner/Desktop/ballista.py", line 16, in <module>
    print(CalculateAngle(float(90.0297)))
  File "C:/Users/Owner/Desktop/ballista.py", line 14, in CalculateAngle
    return float(radToDeg(math.atan(((v ** 2) + (sqrt((v ** 4) - (g * ((g * x ** 2) + (2 * y * v ** 2)))))) / (g * x))))
TypeError: can't convert complex to float

有人可以帮我解决这个问题吗?谢谢!

2 个答案:

答案 0 :(得分:1)

请参阅此ValueError: negative number cannot be raised to a fractional power

这可能是由于提高功率优先于一元减号。

答案 1 :(得分:0)

1)您正在调用名为radToDeg的函数,其输入角度为度。确保你传递的是函数的正确参数。

2)为什么要定义自己的sqrt而非使用math.sqrt

3)当我运行此代码时,我得到一个完全不同的错误:ValueError: negative number cannot be raised to a fractional power。这正是你想要运行的吗?