import math

def cambio_unid_terrestre_cgs(masa, radio):
  return masa*5.972e+27,radio*6.378e+8

def densidad_planeta(lmasa, lradio):
  densidad=[]
  for i in range(len(lmasa)):
    if(lmasa[i]!=99999.0 and lradio[i]!=99999.0):
      m_p,r_p=cambio_unid_terrestre_cgs(lmasa[i], lradio[i])
      densidad.append(m_p/(4/3*math.pi*r_p**3))
    else:
      densidad.append(99999.0)
  return densidad

def valores_extremos(lista):
  maximo=lista[0]
  minimo=lista[0]
  ind_max=0
  ind_min=0
  for i in range(len(lista)):
    if (lista[i]>maximo and lista[i]!=99999.0):
      maximo=lista[i]
      ind_max=i
    if (lista[i]<minimo):
      minimo=lista[i]
      ind_min=i
  return maximo,ind_max,minimo,ind_min

nombre_planeta=[]
unidades=[]
nro_estrellas=[]
nro_planetas=[]
met_descub=[]
Porb_planeta=[]
a_planeta=[]
r_planeta=[]
m_planeta=[]
distancia=[]

try:
  with open("Planetas-extrasolares-en-sistemas-estelares-multiples.txt", "r") as archivo:
    next(archivo)
    for linea in archivo:
      datos=linea.split()
      nombre_planeta.append(datos[0])
      nro_estrellas.append(int(datos[1]))
      nro_planetas.append(int(datos[2]))
      met_descub.append(datos[3])
      Porb_planeta.append(float(datos[4]))
      a_planeta.append(float(datos[5]))
      r_planeta.append(float(datos[6]))
      m_planeta.append(float(datos[7]))
      distancia.append(float(datos[8]))
except FileNotFoundError:
  print("El archivo no existe")

dens_planeta=densidad_planeta(m_planeta, r_planeta)
print("Planeta      Densidad [gr/cm³]")
for i in range(len(dens_planeta)):
   print(f"{nombre_planeta[i]:19}{dens_planeta[i]:.3f}")

v_max_Porb,ind_max_Porb,v_min_Porb,ind_min_Porb=valores_extremos(Porb_planeta)
print(f"Planeta con mayor periodo orbital: {nombre_planeta[ind_max_Porb]}, Periodo orbital: {v_max_Porb} días.")
print(f"El método de descubrimiento fue: {met_descub[ind_max_Porb]}.")
print(f"Planeta con menor periodo orbital: {nombre_planeta[ind_min_Porb]}, Periodo orbital: {v_min_Porb} días.")
print(f"El método de descubrimiento fue: {met_descub[ind_min_Porb]}.")

v_max_a,ind_max_a,v_min_a,ind_min_a=valores_extremos(a_planeta)
print(f"Planeta con mayor semieje mayor: {nombre_planeta[ind_max_a]}, Semieje mayor: {v_max_a} UA.")
print(f"El método de descubrimiento fue: {met_descub[ind_max_a]}.")
print(f"Planeta con menor semieje mayor: {nombre_planeta[ind_min_a]}, Semieje mayor: {v_min_a} UA.")
print(f"El método de descubrimiento fue: {met_descub[ind_min_a]}.")
