Я получаю сообщение об ошибке: "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)
2 ответа
В Python есть две арктангенсные функции: atan
просто обратная сторона tan
; но atan2
принимает 2 аргумента В вашем случае, так как вы знаете оба catheti, вы также можете использовать функцию с двумя аргументами atan2
:
ang = atan2(y, x)
В качестве альтернативы вы можете написать
ang = atan(y / x)
Обоснование atan2
является то, что он работает правильно, даже если x
0; в то время как с atan(y / x)
ZeroDivisionError: float division by zero
будет поднят.
Дополнительно, atan
может дать только угол между -π/2 ... +π/2, тогда как atan2
знает признаки обоих y
а также x
и, следовательно, может знать, в какой из 4 квадрантов падает значение; его значение колеблется от -π до +π. Хотя, конечно, у вас не будет треугольника с отрицательной шириной или высотой...
Причина этой ошибки в том, что 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