我正在尝试制作一个基本工具,让我的日常生活更轻松,为我解决一些任务。不幸的是,当使用切线时,我无法弄清楚如何以度数计算。
我的代码:
import math
class Astro():
def start(self):
velocity = input("What is the galaxy's velocity? (m/s) \n")
peculiar = (float(velocity) - 938600) ** 2
mass = (3 * float(peculiar) * (10 ** 11) * 50 * (10 ** 6) * (8 * (180 / math.pi))
* 9.46 * (10 ** 15)) / (2 * 6.67 * (10 ** -11))
print("The galaxy's mass is " + str(mass) + " kg. \n")
if __name__ == '__main__':
sup = Astro()
sup.start()
编辑:抱歉缺乏背景;这是关于使用2个函数计算星系质量,第一个是第7行获得特殊速度,第二个是第8-9行来获得所考虑星系的实际质量。
求助:math.tan(8 * pi / 180)
感谢您的帮助!
答案 0 :(得分:3)
计算机以弧度工作。尝试
answer = tan(angle * pi / 180)
将您的角度(以度为单位)用于trig函数。或者尝试
answer = atan(number) * 180 / pi
以学位获得答案。
答案 1 :(得分:2)
math
包具有radians
and degrees
功能,但这些只是:
def radians(deg):
return deg * pi / 180
def degrees(rad):
return rad * 180 / pi
这是一个包装器,你可以使用它来制作使用度数的触发器功能(虽然我使用numpy
代替math
,但它只是躺在某处)
import math
import itertools
import functools
def _use_deg(f, arc = False):
if not arc:
def df(*args):
args = list(args)
for index, value in enumerate(args):
try:
args[index] = math.radians(value)
except TypeError:
pass
return f(*args)
else:
def df(*args):
return math.degrees(f(*args))
return functools.wraps(f)(df)
sind = _use_deg(math.sin)
cosd = _use_deg(math.cos)
tand = _use_deg(math.tan)
arcsind = _use_deg(math.asin, True)
arccosd = _use_deg(math.acos, True)
arctand = _use_deg(math.atan, True)
arctan2d = _use_deg(math.atan2, True)
答案 2 :(得分:0)
你不想和数学库发生争执。让数学库以弧度为单位给出答案,然后将其180/math.pi
的答案乘以得到度数。