Esta es la solución al Ejercicio #4: Ejecutar trabajo en lote y mostrar los resultados por pantalla.
Comprobar en qué posición rankea cada palabra clave
En esta primera parte del ejercicio se pedía actualizar el código de la opción 3 del menú. Básicamente, hay que llamar a la función comprueba_keywords()
para cada palabra clave. Además, hay que actualizar la posición de cada una de ellas en la base de datos.
La solución es sencilla. Te muestro el código completo de mi función run()
, que es dónde tengo la lógica de la aplicación y del menú:
def run(): keywords = Keyword.get_all() dominio = 'j2logo.com' while True: muestra_menu() opcion = input('Selecciona una opción > ') opcion = int(opcion) if opcion == 0: break elif opcion == 1: keywords = carga_keywords() elif opcion == 2: muestra_keywords(keywords) elif opcion == 3: for kw in keywords: posicion = comprueba_keywords(kw.keywords, dominio) kw.posicion = posicion if posicion < 100 else None kw.save() else: print('Opción no válida')
Actualizar la función que muestra las keywords
La segunda parte del ejercicio consiste en actualizar la función que muestra las keywords para que se pueda visualizar la posición en que rankea cada una de las palabras clave:
def muestra_keywords(keywords): contador = 0 for kw in keywords: print(f'KW: {kw.keywords} > {kw.posicion}') contador += 1 if contador == 20: contador = 0 input('Mostrar más...')
Como puedes ver la solución es muy sencilla. Solo hay que mostrar el atributo posicion
de cada una de las instancias.
Extra
La última parte del ejercicio indicaba implementar una función llamada keywords_como_lista_de_valores()
. Esta función hay que implementarla utilizando comprensión de listas y devuelve una lista de tuplas compuestas por cada palabra clave y su posición:
def keywords_como_lista_de_valores(keywords): return [(kw.keywords, kw.posicion) for kw in keywords]