Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Objetivo
Esta prueba busca evaluar tus conocimientos técnicos que requerimos dentro del área de Tecnología
y Desarrollo.
Preguntas
1) Escribe una función en python que reciba un número y regrese el número primo posterior más
cercano.
def numero_primo_siguiete(x):
a = []
for i in range(x+1, 2*x):
if validar_numero_primo(i):
a.append(i)
#print(a)
if len(a) == 0:
if x == 1 or x == 0:
a = [2]
return min(a)
print(numero_primo_siguiete(20))
Pero como en el ejercicio se pedía que fuera respecto a una página web, también realice el
proceso en Django para que el usuario pudiera escribir el número en la url e imprimiera el
primo siguiente. En la siguiente imagen se observa cómo es posible esto:
El código de esta parte es muy extenso porque incluye código de las urls.py, views.py y el
template, pero dejaré un screenshot del código. En la siguiente imagen se ve como esta
compuesto el archivo views.py
Cabe resaltar que puse el código html directamente en el código python, esto para hacerlo
de varias formas de como se puede escribir los templates en Django; esta no es la forma
correcta de hacerlo. La forma correcta de hacerlo es configurar desde settings.py la ruta
de donde se tomarán los templates.
ejemplo (el ejemplo está en javascript, lo puedes hacer en el lenguaje que quieras):
function getPokemonType(name){
url = "https://pokeapi.co/api/v2/type/" + name
// Aqui el request get de la url
return //response
}
console.log(getPokemonType("ground"))
Para esta pregunta se realizó primero la lista de los tipos de Pokemons que hay. Se utilizó
solo la librería de requests para obtener los datos de la API. Iba usar pandas para
acomodar los datos, pero ví que era más óptimo usar solo listas.
Seguidamente se realizó un ciclo para obtener la información de cada pokemon y
guardalo en json o html. En este caso lo hice en html para que pudiera funcionar con
Django.
La función final sería la que se llama info_tipo_pokemon() la cual solo hay que meterle el
parámetro del nombre para que nos imprima la información. En la imagen se observa que
pedimos tipo “normal” y nos arroja la información de todo ese tipo.
El código sería:
import requests
import pandas as pd
pagina = "https://pokeapi.co/api/v2/type/"
datos = requests.get(pagina)
# Obtenemos lista de tipos de pokemon
lista_tipos_de_pokemon = []
if datos.status_code == 200:
json = datos.json()
resultados = json.get("results",[])
if resultados:
for tipo in resultados:
tipo_de_pokemon = tipo["name"]
lista_tipos_de_pokemon.append(tipo_de_pokemon)
# Obtenemos las información de todos los tipos de pokemon
informacion_todos_tipos = []
for i in lista_tipos_de_pokemon:
pagina = "https://pokeapi.co/api/v2/type/"+i
datos = requests.get(pagina)
if datos.status_code == 200:
json = datos.json()
informacion_todos_tipos.append(json)
# Creamos una funcion para pasarle los parametros de tipos
def info_tipo_pokemon(indica_el_tipo):
# Pasamos a diccionario las dos listas
diccionario_tipo = dict(zip(lista_tipos_de_pokemon, informacion_todos_tipos))
a = diccionario_tipo.get(indica_el_tipo)
return a
info = info_tipo_pokemon("normal")
print(“info”)
Le puse la ruta absoluta del template, pero no es la forma correcta de hacerlo, lo hice así
para poder desglosar paso a paso cómo se abre el template de forma manual el Django.
La forma correcta es con la función Render que viene en Django.
En la siguiente imagen se ve como ya se ha renderizado una tabla con los pokemons y su
información correspondiente.
El formato de la tabla está directamente en el código html con la etiqueta de <style>
El usuario le puede dar click en cualquier enlace para poder visualizar la información en
formato json de cada tipo de pokemon, como se observa en la siguiente imagen:
3) Modificar la función anterior para que la respuesta solo regrese el arreglo "pokemon"
Para esta pregunta se utilizó la información que arrojaba la función anterior para poder
ordenar los pokemons dependiendo de su tipo, es decir, esto arrojará todos los pokemons
acomodados por su tipo. En la siguiente imagen se observa cómo se imprime el nombre de
los pokemons:
4) Modificar nuevamente la función anterior, esta vez para obtener solo los pokemons que
empiecen con la letra "s"
Para esta pregunta se utilizó la información de la función anterior para tomar como
ejemplo los pokemons fantasma y iterar sus nombres. Y solo con una condicional le decimos que
si la primera letra del nombre es igual a “S” que lo guarde en una lista y luego que la imprima.
En la siguiente imagen se observa como se realizó.
# Ya que tenemos los pokemons acomodados por typo
# Tomamos por ejemplo la lista de los pokemons fantasma
# Esto lo podemos hacer para cada lista de pokemons
pokemon_fantasma_inicio_s = []
for i in pokemon_por_tipo_ghost:
if i[0] == "s":
pokemon_fantasma_inicio_s.append(i)
print(pokemon_fantasma_inicio_s)
5) Escriba los métodos necesarios para crear, actualizar, obtener y eliminar a un usuario
utilizando python como lenguaje y django como framework, proponga el esquema de base de
datos para almacenar la mayor información posible de un usuario, los datos obligatorios para
crear a un usarios son su email y password. (las respuesta de los servicios debe ser en
formato json)
Usando Django como Framework tenemos:
Como es un proyecto nuevo en Django se debe de crear un superusuario con el comando:
Solo basta con presionar el botón de Delete para que se elimine el usuario.
En la siguiente imagen se ve como están registrados los dos usuarios que realizamos.
Hay muchas formas para eliminar un usuario, también podríamos hacer una meta clase
para eliminar el registro, pero una forma sencilla sería realizar una peticion con User.objects.get
para ver si el usuario se encuntra, si se encuentra que lo elimine, si no, que imprima que el usuario
no existe y presente el template_de_eliminacion.html.
Para que la respuesta sea un json dependiendo de los usuarios que se registren tenemos que usar
la clase que se usa para crear el usuario.