En este post te mostraré un ejercicio resuelto con Python que cubre varias cosas como recursividad, manejo de diccionarios, listas, etcétera.
Vamos a ver cómo resolver cada apartado de este problema propuesto. Igualmente con éste puedes practicar tus habilidades con el lenguaje.
Es un ejercicio del laboratorio del profesor Oak que dice así:
Te encuentras trabajando como practicante en el laboratorio del Profesor Oak y te ha
asignado la tarea de analizar el inventario de Pokemones. Él tiene un archivo que
contiene los siguientes datos:
Un ejemplo del contenido del archivo y el orden de las columnas se puede observar a continuación, es un archivo CSV:
Para trabajar esta información el profesor Oak te pide pasar los datos de los Pokemones a un diccionario que contiene otro diccionario con la siguiente estructura:
Aquí un ejemplo del diccionario:
Importante: el ID del pokémon, los puntos de ataque, puntos de defensa y puntos de velocidad deben ser un entero. El nombre y habilidad deben estar en formato string.
El profesor Oak le solicita que cree el diccionario a partir del archivo pokemon.csv
. Recuerde que el diccionario debe tener la estructura previamente descrita.
Simplemente leemos un CSV, usamos split y luego convertimos la cadena a un número.
El profesor Oak necesita consultar frecuentemente datos de los Pokémon que tiene en su laboratorio para intercambiar con otros investigadores.
Por ese motivo, él le solicita que genere una función que a partir del ID del Pokémon y un valor de búsqueda devuelva como resultado el dato para el Pokémon.
Los valores de entrada son el id, el valor y el diccionario de Pokemones. El valor de salida debería ser el dato solicitado para el Pokémon con ese ID.
El profesor Oak requiere conocer el Pokémon más rápido que tiene en su laboratorio para enviarlo a una competencia en el torneo Pokémon de la ciudad Johto.
Él le solicita que cree un algoritmo de búsqueda con complejidad O(n) que retorne una tupla con el nombre del Pokémon y el puntaje de velocidad.
Lo que hacemos aquí es recorrer todo el diccionario y buscar el Pokémon.
El profesor Oak necesita ordenar el nombre de los Pokemones de forma ascendente para publicar la lista en la página web del laboratorio.
Él le solicita que cree un algoritmo de ordenamiento con complejidad O(n log n), que retorne una lista de tuplas que contenga el nombre del Pokémon y el ID del mismo.
En este caso usamos el algoritmo de merge sort para ordenar la lista, ya que la complejidad lo requiere así.
En tres semanas el profesor Oak necesita entregar Pokemones a los nuevos entrenadores que llegan a su laboratorio.
En esta ocasión va a realizar un sorteo con los nombres de los Pokemones publicados en la página web del laboratorio.
Luego del sorteo necesita conocer la habilidad que el Pokémon tiene para instruir a los entrenadores, por ese motivo le solicita que cree un algoritmo de búsqueda binaria con complejidad O(log n), que reciba como parámetro el nombre del Pokémon a buscar y retorne los datos del Pokémon en el diccionario.
Si el nombre del Pokémon no es encontrado debe retornar el valor de -1
como llave y el texto “No encontrado” como valor.
En este caso simplemente usamos la búsqueda binaria que ya hemos visto anteriormente, solo que adaptada para este ejercicio.
El código completo queda como se ve a continuación. Ya te dije que es un ejercicio resuelto de Python, por ello es que es muy específico en su solicitud:
En las últimas líneas te muestro cómo usar los métodos. Por cierto, si quieres la listas de pokemones puedes verla aquí.
Te dejo más tutoriales y códigos de Python en mi blog.
En ocasiones es necesario leer los pixeles y colores de una imagen con JavaScript del…
Siguiendo con los tutoriales de listas desplegables o select con JavaScript, vamos a ver cómo…
Hoy vamos a ver programar la impresión de un PDF generado a partir de HTML…
En este tutorial básico de JavaScript con HTML vamos a ver cómo llenar una lista…
En este artículo se presenta una guía para imprimir un PDF a partir de una…
En este post voy a enseñarte cómo imprimir un PDF a partir de su representación…
Esta web usa cookies.