Как я могу вычислить тангенс с градусами вместо радианов?

Я пытаюсь сделать основной инструмент, чтобы сделать мою повседневную жизнь проще, решая некоторые задачи для меня. К сожалению, я не могу понять, как заставить его вычислять в градусах при использовании тангенса.

Мой код:

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, чтобы получить фактическую массу рассматриваемой галактики.

Решено: математика (8 * пи / 180)

Спасибо за твою помощь!

3 ответа

Компьютеры работают в радианах. Пытаться

answer = tan(angle * pi / 180)

использовать свой угол в градусах в функцию триггера. Или попробуй

answer = atan(number) * 180 / pi  

получить ответ в градусах.

math пакет имеет функции radians а также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)

Вы не хотите драться с математической библиотекой. Пусть математическая библиотека даст вам ответ в радианах, затем умножьте его на 180/math.pi чтобы получить степени.

Другие вопросы по тегам