2016-08-21 11 views
2

Я новичок в программировании, поэтому я понятия не имею, что пошло не так. пожалуйста, помогитеЯ получаю сообщение об ошибке: «atan2() принимает ровно 2 аргумента (1 данный)»

from math import atan2, pi 
x = int(input("value of x")) 
y = int(input("value of y")) 
r = (x**2 + y**2) ** 0.5 
ang = atan2(y/x) 
print("Hypotenuse is", r, "angle is", ang) 
+1

При вызове 'atan2' вам нужно передать 2 аргумента,' y/x' - 1 номер, например. аргумент –

+0

Также проверьте закрывающую скобку на 'atan2 ('. – lit

ответ

2

Причина этой ошибки в том, что atan2 требует два аргумента. Обратите внимание:

>>> from math import atan, atan2 
>>> atan(2) 
1.1071487177940904 
>>> atan2(4, 2) 
1.1071487177940904 

Обратите внимание, что atan(y/x) не работает, если x равен нулю, но atan2(y, x) будет продолжать работать нормально:

>>> atan(4/0) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ZeroDivisionError: division by zero 
>>> atan2(4, 0) 
1.5707963267948966 
4

В Python, есть 2 арктангенс функции: atan просто инверсией tan; но atan2 принимает 2 аргумента. В вашем случае, так как вы знаете, как катетами, вы можете также использовать функцию 2-аргумент atan2:

ang = atan2(y, x) 

В качестве альтернативы, вы можете написать

ang = atan(y/x) 

Обоснованием atan2 является то, что ему работает правильно, даже если x равно 0; в то время как с atan(y/x) a ZeroDivisionError: float division by zero будет поднят.

Кроме того, atan может дать только угол между -π/2 ... + π/2, в то время как atan2 знает признаки обоих y и x, и, таким образом, может знать, какой из 4 квадрантов значение падает; его значение варьируется от -π до + π. Хотя, конечно, у вас не было бы треугольника с отрицательной шириной или высотой ...