我是编程新手,所以我不知道出了什么问题。请帮忙
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)
在 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 个象限中的哪一个;它的取值范围是 -π 到 +π。虽然,当然你不会有一个负宽度或高度的三角形......y
x
该错误的原因是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