Как рассчитать фазу Луны с помощью pyswisseph

#python #tuples

#python #кортежи

Вопрос:

Здравствуйте, я работаю над программным обеспечением для астрологии, но у меня проблема

 def solar_longitude(jd):
  """Solar longitude at given instant (julian day) jd"""
  data = swe.calc_ut(jd, swe.SUN, flag = swe.FLG_SWIEPH)
  return data[0]   # in degrees

def lunar_longitude(jd):
  """Lunar longitude at given instant (julian day) jd"""
  data = swe.calc_ut(jd, swe.MOON, flag = swe.FLG_SWIEPH)
  return data[0]   # in degrees
def lunar_phase(jd):
  solar_long = solar_longitude(jd)
  lunar_long = lunar_longitude(jd)
  moon_phase = (lunar_long - solar_long) % 360
  return moon_phase
print(lunar_phase(2455027.75138))
 

вывод—

     moon_phase = (lunar_long - solar_long) % 360
TypeError: unsupported operand type(s) for -: 'tuple' and 'tuple'
 

Пожалуйста, помогите с этой проблемой

Ответ №1:

Согласно документам calc_ut() , возвращается «кортеж из 6 float и возвращаемых флагов», поэтому, когда вы берете data[0] , вы все равно получаете кортеж. Вы, вероятно, хотите data[0][0] вместо этого.