プログラミング初心者なので何が悪いのかわかりません。助けてください
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 つの引数を取ります。あなたの場合、両方のカテティを知っているので、2引数関数を使用することもできますatan2
:
ang = atan2(y, x)
あるいは、次のように書くこともできます
ang = atan(y / x)
の理論的根拠は、が 0 のatan2
場合でも正しく機能することです。ax
を使用すると発生します。atan(y / x)
ZeroDivisionError: float division by zero
さらに、atan
は -π/2 ... +π/2 の間の角度のみを与えることができますが、とatan2
の両方の符号を知っているため、値が 4 つの象限のどれに該当するかを知ることができます。その値の範囲は -π から +π です。もちろん、負の幅または高さの三角形はありません...y
x
そのエラーの理由は、atan2
2 つの引数が必要なことです。観察:
>>> 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