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 км / а.е. для преобразования).
Вы можете увидеть реализацию этого класса в исходном коде здесь.