2

我是编程新手,所以我不知道出了什么问题。请帮忙

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)
4

2 回答 2

4

在 Python 中,有 2 个反正切函数:atan是 的倒数tan;但atan2需要 2 个参数。在你的情况下,因为你知道两个catheti,你也可以使用 2-argument 函数atan2

ang = atan2(y, x)

或者,你可以写

ang = atan(y / x)

理由atan2是即使x为 0 也能正常工作;而与atan(y / x)aZeroDivisionError: float division by zero将被提出。

此外,atan只能给出 -π/2 ... +π/2 之间的角度,而知道和atan2的符号,因此可以知道该值落在 4 个象限中的哪一个;它的取值范围是 -π 到 +π。虽然,当然你不会有一个负宽度或高度的三角形......yx

于 2016-08-21T22:28:11.133 回答
2

该错误的原因是atan2需要两个参数。观察:

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

请注意,如果为零 atan(y/x)则不起作用,但 会继续正常工作:xatan2(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
于 2016-08-21T22:27:29.140 回答