Я получаю сообщение об ошибке: "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
Другие вопросы по тегам