Академический Документы
Профессиональный Документы
Культура Документы
Fundamentos de Programación
Proyecto Primer Parcial
2019 – 1T
Descripción:
Se le ha pedido a usted que desarrolle un programa para explorar los atractivos turísticos que tiene el
Ecuador. El programa permite consultar los lugares turísticos del ecuador filtrando los resultados por
algunos criterios, recomendar lugares turísticos a usuarios basándose en su perfil, consultar lugares
turísticos cerca de usted y realizar un análisis estadístico de los atractivos del país.
Cada línea del archivo sitiosturistico.csv corresponde a un punto turístico del ecuador y contiene
información la siguiente información:
datos = leer_archivo(“sitiosturisticos.csv”)
print(datos)
Salida:
[
'1,Río Santa Bárbara,Rio,Azuay,Gualaceo,-29.047956,-
78.778787,senderismo;picnic;ciclismo,3', '2,Represa de Paute,Represa,Azuay,Cuenca,-
2.586111,-78.558333,mirador; educativo,2.5', '3,El Turi,Mirador,Azuay,Cuenca,-
2.9223567,-79.0103607,mirador; cultural; religioso,4'
….
]
datos = leer_archivo(“clima.csv”)
print(datos)
Salida:
[
'2000,Enero,Imbabura,Otavalo,115.2,9.2,', '2000,Febrero,Imbabura,Otavalo,113.3,9.2,',
'2000,Marzo,Imbabura,Otavalo,121.7,9.8,', '2000,Abril,Imbabura,Otavalo,290.7,10.1,'
]
El archivo funciones.py tendrá las funciones que usted implemente para llevar a cabo el proyecto. Por
el momento solo tiene la función procesarDatos que usted debe terminar de implementar. La función
procesarDatos debe leer el contenido del archivo de sitios turísticos y retornar una lista donde cada
uno de los elementos es una lista con la información de un sitio turístico. El objetivo de esta función
es procesar la lista préstamo para hacer futuras búsquedas más rápidas. A continuación, un ejemplo de
la lista que devuelve la función:
NOTA: Fíjese que el puntaje se almacena como tipo de dato float y que la ubicación como una
lista [latitud,longitud]
[codigo, nombre, tipolugar, provincial, ciudad, ubicación, actividades, puntaje]
El archivo principal.py por el momento lo único que hace es importar la librería funciones.py,
invocar a la función procesar_datos, almacenar el valor devuelto en la variable
sitiosturisticos e imprimir el valor devuelto
El menú debe ejecutarse de forma continua. El usuario ingresa una opción, se realiza la
opción y se regresa al menú principal.
Se deben realizar las validaciones del caso para evitar que el programa se caiga o que se ingrese
datos basura. No puede haber dos sitios con el mismo nombre, se debe validar la existencia de
las provincias y el tipo de lugar (el tipo de lugar deber ser uno de los listados en la tabla 1).
Cada lugar debe tener al menos una actividad y si tiene más de una actividad está deben ser
ingresadas separadas por punto y coma “;”. El puntaje debe estar entre 1 y 5. El programa no
distingue entre mayúsculas y minúsculas al momento de comprobar la existencia de un lugar,
provincia y tipo lugar.
Para realizar este análisis debe usar arreglos de numpy paralelos con los datos del
nombre, tipo y puntaje de cada atractivo del país.
anombre = np.array([‘Rio SantaBarbara’, ‘El Turi’,..])
atipo = np.array([‘Rio’, ‘Mirador’,…])
apuntaje = np.array([3.0, 4.0,…])
La opción pide al usuario el nombre del sitio turístico que desea visitar y el programa
muestra lo siguiente
o Temperatura promedio por mes del cantón donde se encuentra el sitio
o Precipitación promedio por mes del cantón donde se encuentra el sitio
o Mes del año más caliente y menos caliente del cantón donde se encuentra el
sitio
o Mes del año con más lluvia y menos lluvias del cantón donde se encuentra el
sitio
o Las mejores condiciones para realizar una visita de acuerdo a un tipo se
muestran a continuación:
Para realizar este análisis debe usar arreglos de numpy paralelos con los datos de la
provincia, cantón, mes, temperatura y precipitación promedio.
6. Salir
Termina la ejecución del programa
2. Escriba una función que reciba la lista sitios_turisticos y retorne una lista con los tipos
de sitios atractivos que tiene el país sin repetir.
3. Una función llamada filtrar_sitios que recibe la lista de lista sitiosturisticos, un tipo de
lugar, una lista con actividades y el nombre de una provincia y retorna el código de las
provincias que cumplen con los criterios de búsquedas. Si uno de los criterios de
búsqueda es todos, ese criterio no se toma en cuenta. En el caso de las actividades se
debe retornar los sitios en donde se puedan realizar al menos una de las actividades
pasada.
5. Una función que permita graficar en un mapa la ubicación de sitios turísticos del país
La función recibe la lista sitiosturisticos y una lista con códigos de sitios turísticos que
se desean ver en el mapa. Para generar un mapa que tenga puntos geográficos puede
usar la librería folium. Folium no es parte del core de python por lo que antes de usarla
debe instalarla en su computadora.
A continuación, un ejemplo que muestra cómo crear un mapa con dos marcadores (uno
en quito y otro en Guayaquil).
6. Una función que reciba como parámetro dos coordenadas geográficas y retorne la
distancia en kilómetros entre ambos puntos. Cada coordenada es una lista que tiene
dos valores (lat, long). Para calcular la distancia entre dos coordenas geográficas de la
tierra podemos usar la fórmula de distancia Harvesine. La fórmula es:
donde
R -> 6378 km
lat2 y long2 -> latitud y longitud del punto de llegada en radianes
lat1 y long1 -> latitud y longitud del punto de partida en radianes
d -> la distancia entre los dos puntos
Nota: Los valores de latitud y longitud dados en la base de datos están en grados
centígrados, por lo que los debe transformar en radianes antes de hallar la
distancia.
8. Escriba una función que lea el archivo clima.csv y retorne cinco arreglos de numpy de
una dimensión con los datos del mes, provincia, cantón, temperatura y cantidad de
precipitación que se encuentran en el archivo.
Consideraciones Finales
El menú debe ejecutarse continuamente.
Su programa no se debe caer en medio de la ejecución.
Debe dividir su programa en funciones. No se aceptarán proyectos que no hagan uso
de funciones y tengan toda la implementación en el menú principal
Las funciones aquí indicadas son las mínimas necesarias, usted puede definir más
funciones si lo cree necesario (y realmente son necesarias más funciones).
El proyecto es en grupo de dos personas.
Si se encuentra copiando y pegando código en varias partes del programa
probablemente debe encapsular ese código en una función.
Se valorará la presentación del proyecto y su interacción. Por buena presentación podrá
tener 1 punto extra. (Revisar https://docs.python.org/3/library/string.html#formatstrings)
En este proyecto se tomará en cuenta para la calificación final la calidad de su
solución:
o Que divida el código en funciones apropiadamente.
o Que use estructuras de control adecuadas.
o Que use nombre de variables apropiados.
o Modularización de su proyecto.