Durante esta práctica, los alumnos serán capaces de:
Esta actividad promueve las siguientes habilidades, valores y actitudes: análisis y síntesis, capacidad de resolver problemas, creatividad, y uso eficiente de la informática y las telecomunicaciones.
JSON (JavaScript Object Notation) es un formato textual para el intercambio de información. Su uso resulta particularmente útil al momento de enviar y recibir datos compuestos vía llamadas de Ajax.
Revisa alguna de las siguientes ligas para conocer de manera general dicha notación:
Baja el siguiente archivo: json-py-3_4.zip,
descomprímelo y copia el archivo json.py
a algún directorio
del PATH de Pyhton (por ejemplo c:\Python25\lib
). Para
conocer el PATH de Python, teclea lo siguiente desde el shell de Python:
>>> import sys >>> sys.path
Revisa que JSON haya quedado correctamente instalado en Python:
>>> import json
Para convertir un dato de Python a JSON, se debe usar la función
write
. La operación inversa se llama read
. La
conversión sólo se puede llevar a cabo con los siguientes tipos de datos
de Python: diccionarios, strings, listas, enteros, flotantes, booleanos
y None
. Ejemplo:
>>> x = {'nombre':'Juan', 'edad':21, 'sueldo':6500.5, 'casado':False, 'novias':['Lolita', 'Conchita', 'Lupita']} >>> j = json.write(x) >>> j '{"edad":21,"nombre":"Juan","sueldo":6500.500000,"casado":false, "novias":["Lolita","Conchita","Lupita"]}' >>> json.read(j) {'edad': 21, 'nombre': 'Juan', 'sueldo': 6500.5, 'casado': False, 'novias': ['Lolita', 'Conchita', 'Lupita']}
El framework de Prototype provee de soporte para JSON. El método
Object.toJSON
convierte un objeto a su correspondiente notación
en JSON. El método evalJSON
de un objeto de tipo string
realiza la operación inversa.
Por ejemplo, desde una página que ya haya cargado
prototype.js
y usando Firebug:
>>> x = {nombre:'Juan', edad:21, sueldo:6500.5, casado:false, novias:['Lolita', 'Conchita', 'Lupita']} Object nombre=Juan edad=21 sueldo=6500.5 casado=false >>> j = Object.toJSON(x) "{"nombre": "Juan", "edad": 21, "sueldo": 6500.5, "casado": false, "novias": ["Lolita", "Conchita", "Lupita"]}" >>> j.evalJSON() Object nombre=Juan edad=21 sueldo=6500.5 casado=false
Esta práctica puede ser elaborada de manera individual o en parejas.
Crea y configura un proyecto de Django llamado numeritos
.
Al acceder a la página http://localhost:8000/index.html
debe aparecer un formulario parecido al siguiente:
El usuario coloca un número en el campo correspondiente y presiona el
botón Enviar. Haciendo una sola llamada de Ajax (usando
un objeto Ajax.Request
de Prototype), el servidor responde
con el texto correspondiente a un objeto JSON con tres propiedades sobre
el número de entrada (si es perfecto, si es primo, y cuales son sus
factores primos). Es importante que el encabezado
Content-Type
de la respuesta sea application/json
.
Los lugares de la página marcados con respuesta deben ser
actualizados al estilo Ajax (sin necesidad de recargar la página
completa).
NOTA 1: Un número es perfecto si es igual a la suma de todos sus divisores, excluyéndose a sí mismo. Por ejemplo, 6 es perfecto ya que 6 = 1 + 2 + 3.
NOTA 2: Los factores primos de un número N son todos los números primos que son divisibles entre N. Si se multiplican todos esos números entre sí el resultado debe dar N. Por ejemplo, los factores primos de 96 son 2, 2, 2, 2, 2 y 3.
Si el número de entrada es 666, su salida correspondiente debe ser:
Sigue las siguientes indicaciones para entregar tu práctica:
readme.txt
. En este archivo debes incluir el
nombre completo y matrícula de los autores de la práctica.
numeritos.zip
con el
contenido completo del directorio donde se encuentra tu proyecto
Web.
Esta práctica será evaluada usando los siguientes criterios:
100 | La práctica cumple con todos los requerimientos. |
---|---|
60-90 | La práctica funciona en general, pero contiene uno o varios errores menores. |
50 | Proyecto Web produce un error a tiempo de ejecución. |
DA | La solución es un plagio. |