2016-11-07 1 views
1

Мне нужна помощь с этим кодом для школьного проекта.Python - TypeError: не может преобразовать комплекс в float

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 

Может кто-то помочь мне исправить это? Благодаря!

+1

Кажется, что ваша функция настроена на прием радианов в качестве входных данных, но вы проходите градусы ... – mgilson

ответ

0

1) Вы вызываете функцию под названием radToDeg с углом ввода в градусах. Убедитесь, что вы передаете правильные аргументы своим функциям.

2) Почему вы определяете свой собственный sqrt вместо math.sqrt?

3) Когда я запускаю этот код, я получаю совершенно другую ошибку: ValueError: negative number cannot be raised to a fractional power. Это именно то, что вы пытаетесь запустить?