Python конвертировать au в км

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

from skyfield.api import earth, mars, now
ra, dec, distance = earth(now()).observe(mars).radec()


print(distance)

Это распечатает расстояние в астрономических единицах. Чтобы пересчитать в километры, я попытался умножить на 149597871:

from skyfield.api import earth, mars, now
ra, dec, distance = earth(now()).observe(mars).radec()


print(distance*149597871)

Но это возвращает ошибку:

TypeError: unsupported operand type(s) for *: 'Distance' and 'int'

Что я могу сделать?

1 ответ

Решение

distance это Distance объект, так что вы можете просто использовать distance.km если вы хотите расстояние в км. Если вы хотите сделать преобразование самостоятельно, вы можете использовать distance.AU * 149597871, (Если он не совпадает точно, это потому, что Skyfield использует 149597870.700 км / а.е. для преобразования).

Вы можете увидеть реализацию этого класса в исходном коде здесь.

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