Etiqueta: funciones

funciones y procedimientos

  • 1Eva_IIT2018_T3 Compras 'Black Friday'

    1ra Evaluación II Término 2018-2019, Noviembre 23, 2018. CCPG001

    (Editado para tarea, se mantiene el objetivo de aprendizaje)

    Tema 3. (50 puntos) El Black Friday inaugura la temporada de compras navideñas con significativas rebajas en muchas tiendas minoristas y grandes almacenes. https://www.profesionalreview.com/2018/09/24/tiendas-donde-comprar-black-friday/

    Sucede después de la celebración de Acción de Gracias en Estados Unidos.

    Suponga que posee los datos de los productos de una tienda en los siguientes arreglos:

    C: códigos de todos los productos (cadenas de caracteres)
    P: precios en dólares para cada uno de los productos (valores con decimales).
    D: descuentos asociados a cada producto (enteros entre 0 y 100)
    S: nombre de la sección donde se encuentra cada producto (cadenas de caracteres)

    Se requiere implementar las siguientes funciones:

    1.  calcularPrecio(codigo,C,P,D) que recibe un código y los arreglos C,P,D y retorna el precio final del producto, aplicando el descuento correspondiente.
      Para calcular el precio final, aplique las siguiente fórmula:
      precio_final = precio - precio*\frac{descuento}{100}
    2. calcularTotal(compras,C,P,D) que recibe una lista de compras con los códigos de los productos, los arreglos C,P,D y aplicando todos los descuentos calcula el valor total a pagar, .
    3. hallarSecciones(compras,C,S) que recibe una lista de compras con los códigos de los productos, los arreglos C y S y determina las secciones que deberán visitar durante las compras. La lista de visitas no tiene elementos repetidos.
    4. descuentosPorSección (D,S) que recibe los arrelgos D y S y retorna una tabla con el nombre de cada sección y la cantidad de productos que tienen más del 50% de descuento.

    Realice un programa que inicialmente muestre una tabla con las secciones y cantidad de productos con más del 50% de descuento. Luego para las compras, permita ingresar los códigos de los productos, procese y muestre el valor total a pagar y las secciones que necesita visitar. El usuario terminará de ingresar las compras escribiendo 'fin'.

    Ejemplos de arreglos:

    C = ['CTR-2424', 'SKU-5675', 'PSS-4542']
    P = [ 56.65, 32.00, 22.22]
    D = [0, 50, 10]
    S = ['Ropa Niños', 'Juguetes', 'Hombre']
    

    Rúbrica: numeral 1 (5 puntos), numeral 2 y 3 (10 puntos c/u), numeral 4 (15 puntos). programa (10 puntos)


    Referencias:

  • 3Eva_IT2017_T2 Huracanes en Atlántico Norte

    3ra Evaluación I Término 2017-2018. Septiembre 16, 2017 /CCPG001

    (Editado para tarea, se mantiene el objetivo de aprendizaje)

    TEMA 2 (45 puntos). Para el Atlántico Norte, los meteorólogos registran los parámetros que describen a los huracanes .

    La tabla muestra los datos en una matriz M para cada año y nombre asignado al huracan:

    El encabezado de la matriz se describe en el diccionario huracanes que contiene el año (clave tipo entero) y los nombres  de huracanes en ese año (texto en tupla).

    huracanes = {..., 
                 2015:('Ana', ..., 'Kate'),
                 2016:('Alex', ..., 'Otto'),
                 2017:('Ariene', ..., 'Harvey','Irma', ...), 
                 ... }
    

    Los nombres no se repiten y se almacenan en el mismo orden que en la matriz M.

    Por la velocidad del viento, los huracanes se categorízan en :

    categoria Velocidad del Viento
    1 menor a 100 km/h
    2 100 a 150 km/h
    3 150 a 200 km/h
    4 200 a 250 km/h
    5 mas de 250 km/h

    Desarrolle los siguientes literales:

    a) Elabore la función total_marejada(M, cat) que retorna el total de marejadas en metros causadas por los huracanes que tengan categoria cat.

    b) Implemente la función indices_año(huracanes, año) que retorna una tupla con los índices de columna donde empieza y termina año en la matriz M.

    c) Escriba la función velocidad_superior(M, huracanes, año) que retorna la cantidad de huracanes en año que tienen la Velocidad de Desplazamiento (Vd) superior a la Velocidad de Desplazamiento promedio del año dado como parámetro.

    d)  Realice la función ACE(M, huracanes, año) que devuelve la cantidad de energía liberada por todos los huracanes de la temporada año.
    Esto se calcula usando:

    CantidadEnergia = 10 ^{-4} (VV_{1}^{2} + VV_{2}^{2} \text{+ ... + }VV_{n}^{2} )

    Donde VVi es la Velocidad de Viento (en km/h) de cada huracan.

    e) Implemente la función lluvia(M, huracanes, nombre_huracan, año) que devuelve la cantidad de lluvia en centímetros (cm) generada por el nombre_huracan en ese año.

    Rúbrica: literales a,c y d (11 puntos cada uno), literal b (5 puntos), literal e (7 puntos)

    Referencias:
    - Irma: ¿cómo y quién decide el nombre de los huracanes?, http://www.bbc.com/mundo/noticias-37591575,
    http://www.infobae.com/america/mundo/2017/09/07/por-que-bautizan-a-los-huracanes-con-nombres-de-personas/
    - ¿Cómo se clasifican los huracanes en el Atlántico?, https://es.wikipedia.org/wiki/Escala_de_huracanes_de_Saffir-Simpson


    Ejemplo:

    M = np.array([[20, 30, 19, 15, 18],
                  [89,195,120,150,240],
                  [65,165,100,110,200],
                  [30, 49, 35, 89, 67],
                  [ 5, 1.8,  1,  2,  5]])
    
    huracanes = {2016:('Alex', 'Otto'),
                 2017:('Ariene', 'Harvey','Irma'),
                 }
    Se obtiene:
    ---
    categorias:  [1 3 2 2 4]
    Marejadas cat[2]:  3.0
    indices:  [2, 4]
    velocidad superior:  2
    Energia liberada:  0.091
    lluvia en mm:  89.0
    

    Referencia: Archivo original 3Eva_IT2017.pdf

  • 1Eva_IIT2015~T3 Recorrido turístico en ciudad

    1ra Evaluación II Término 2015-2016, Marzo 7, 2016 /CCPG1001

    Tema3. (45%) El programa “Conoce Guayaquil” le ayudará a escoger una opción para recorrer los principales atractivos turísticos de la ciudad durante un día.

    Hay 8 actividades disponibles, pero solo es posible realizar 4 de ellas durante el día.

    Código Actividad Tiempo requerido en horas Costo en $
    1 Malecón 2000 2 6.50
    2 Las Peñas 3 6
    3 BarcoPirata Morgan 2 12.25
    4 Recorrido Panorámico 2 12
    5 Museos 3 10
    6 Parque Histórico 4 10
    7 Mall del Sol 3 6
    8 IMAX 3 8.15

    Para iniciar el programa se debe especificar una colección de listas llamada catalogo, que contenga la información de cada actividad: nombre, tiempo y costo.

    Luego, el programadebe seleccionar aleatoriamente 4 actividades para formar un tour, que es una lista con los códigos de 4 actividades diferentes a realizarse.

    El tour debe satisfacer las siguientes especificaciones:

    • El recorrido deberá empezar exactamente a las 10:00
    • El tiempo total no debe ser mayor a 12 horas
    • La visita al Parque Histórico debe iniciarse máximo a las 14:00 porque cierran a las 18:00
    • El recorrido por el Río Guayas en el Pirata Morgan debe iniciarse a partir de las 14:00
    • La función de cine en el IMAX puede ser a las 12:00, 15:00 ó 18:00
    • Al museo se puede entrar hasta las 18:00

    Las demás actividades pueden realizarse en cualquier horario

    Se requiere implementar:

    1. La función generarCatalogo() que llena una lista con el nombre, tiempo y costo de todas las actividades disponibles, y la retorna.
    2. La función generarTour() que llena una lista con 4 números aleatorios diferentes entre 1 y 8, correspondientes a las actividades a realizarse.
    3. La función duracionActividad() que recibe el catalogo y el código que se desea consultar, devolviendo la duración de la actividad a la que pertenece el código dado.
    4. La función inicioActividad() que recibe el código de la actividad y la hora actual (en formato hh) y devuelva la hora de inicio más cercana para la actividad especificada. Si dado el código y la horaactual no es posible iniciar la actividad requerida,retorne -1.
    5. La función verificarTour() que recibe el catálogo y el tour generado y determina si es posible realizar esa combinación de actividadesde acuerdo a las condiciones explicadas arriba.
    6. La función calcularCostoTotal() que recibe el catálogo y el tour generado, y devuelve el costo total de las actividades a realizar.
    7. La función calcularTiempoTotal() que recibe el catálogo, el tour generado y devuelve la cantidad de horas utilizadas para las 4 actividades.
    8. Un programa que use las funciones implementadas anteriormente para:
      a. Generar el catálogo
      b. Generar un tour válido
      c. Mostrarpor pantalla el tour generado: sus actividades, horarios, tiempo total de recorrido y costo total, por ejemplo:
    10:00 Visita a Museos
    14:00 Río Guayas en el Pirata Morgan
    16:00 Recorrido Panorámico
    18:00 Compras en Mall del Sol
    
    El tour comenzaráa las 10:00 horas y 
    terminará a las 21:00 horas.
    Tiempo total de recorrido: 11 horas
    Costo total: $ 40.25

    Elaborado por C. Vaca, C. Falcones, I. Carrera, J. Magallanes, M. Calderón, E. Cruz y R. Bonilla

  • 1Eva_IIT2015~T2 Dibujar reloj de arena

    1ra Evaluación II Término 2015-2016, Marzo 7, 2016 /CCPG1001

    Tema 2. (20 puntos) Se requiere implementar la función dibujarReloj(n,c) que recibe como parámetros un número n y un caracter c, para dibujar un reloj de arena como se muestra en el ejemplo:

    Si n = 7 y c = ‘.’, se dibujará:
    *******
     *...*
      *.*
       *
      * *
     *   *
    *******

    Rúbrica: definición de función (5 puntos), delimitación de cuadrícula (5 puntos), relleno de cuadrícula (10 puntos)

  • 1Eva_IIT2015~T1 Número Krapekar

    1ra Evaluación II Término 2015-2016, Marzo 7, 2016 /CCPG1001

    Tema 1. (25 puntos) Un número Krapekar es todo entero no negativo n que cuando se eleva al cuadrado, el número resultante puede ser dividido en 2 partes a y b donde a + b = n.

    Por ejemplo, 9 y 297 son números Krapekar:

    92 = 81
         8 + 1 = 9
    
    2972 = 88209
           8820+ 9 = 8829
           882+ 09 = 891
           88 + 209 = 297

    En cambio 143 no es un número Krapekar:

    1432 = 20449
           2 + 0449 = 551
           20 + 449 = 469
           204 + 49 = 253
           2044 + 9 = 2053

    Se requiere implementar la función esKrapekar(unnumero), que recibe como parámetro un número entero no negativo y determina si el número es Krapekar o no.

    Rúbrica: definición de la función (5 puntos), verificación del número entero no negativo (5 puntos), proceso del número (10 puntos), respuesta de la función (5 puntos)


    Referencia: ¿Es el 6174 el número más misterioso del mundo? Derivando. Youtube

  • 2Eva_IIT2016_T2 País destino para jubilados extranjeros

    2da Evaluación II Término 2016-2017. Febrero 14, 2016 /CCPG001

    (Editado para tarea, se mantiene el objetivo de aprendizaje)

    Tema 2. Para ayudar a las personas alrededor del mundo a seleccionar un país donde vivir cuando se jubilen, se ofrece información como el  costo de vida, las temperaturas medias por ciudad, etc.jubiladocuenca01

    a. Escriba la función cargarDatos(nomFile)
    que recibe el nombre de un archivo con las ciudades y sus métricas y retorna un diccionario con la estructura mostrada a continuación:

    Ejemplo: "datos.txt" contiene:
    
    Cuenca,temperatura,22
    Guayaquil,canastaBasica,630
    Cuenca,canastaBasica,457
    Bogota,canastaBasica,321
    Bogota,temperatura,20
    Guayaquil,temperatura,29
    
    cargarDatos("datos.txt") retorna un diccionario con la siguiente estructura:
    datos=
    {"Guayaquil":{"canastaBasica":630, "temperatura":29},
     "Cuenta":   {"canastaBasica":457, "temperatura":22},
      ...}

    Nota: para el ejercicio solo existen dos métricas posibles: “canastaBásica” y “temperatura” y todas las ciudades tienen ambas métricas.

    b. Escriba la función metricaPais(datos, paises) que recibe el diccionario datos, generado con la función anterior, y el diccionario paises que tiene como clave el nombre del país y como valor la lista de ciudades para ese país. Esta función calcula el valor promedio de cada métrica por país y retorna un diccionario cuya clave es el país y cuyo valor es otro diccionario con los promedios por métrica.

    paises={'Ecuador':{'Cuenca','Guayaquil'},'Colombia':{'Bogotá'}, ...}
    
    Por ejemplo, para Guayaquil y Cuenca que pertenecen al mismo país se calcula el promedio de las métricas: "canastaBasica" y "temperatura", cuyo resultado se lo asigna al país Ecuador
    
    {"Ecuador":  {"canastaBasica":542.50, "temperatura":25.5},
     "Colombia": {"canastaBasica":321, "temperatura":20},
     ...}

    c. Escriba la función generaPaises(promedios, metrica, minimo, maximo)  para buscar los paises que en su promedios cumplen con los valores entre mínimo y máximo para una métrica deseada.

    Los argumentos son promedios, con la estructura del diccionario generado en la función anterior, una cadena denominado métrica que puede ser “canastaBasica” o “temperatura” y un valor mínimo y un máximo para dicha métrica. El resultado será un archivo con el nombre de la métrica”.csv” que contiene: los países y el valor de la métrica buscada separados por coma.

    Usando el ejemplo anterior:
    generaPaises(proms, "temperatura", 23, 26) 
    
    "temperatura.csv" tendrá el siguiente contenido:
    Ecuador,temperatura, 25.5

    Referencia: “Ecuador, a la cabeza de los mejores países para los jubilados“. 2 de Enero, 2015, www.eluniverso.com,

    - Archivo original 2Eva_IIT2016.pdf

  • 2Eva_IIT2016_T1 Multas de Transito por sector

    2da Evaluación II Término 2016-2017. Febrero 14, 2016 /CCPG001

    (Editado para tarea, se manteniene el objetivo de aprendizaje)

    Tema 1. (30 puntos) Para registrar las multas de tránsito, la ciudad será representada por una matriz de 5×5 dividida en cuadrantes y sectores. multastransito01

    Cada celda corresponde a un cuadrante y registra los valores acumulados de las multas reportadas por los agentes de tránsito. Existen cinco “sectores” (Norte Sur, Centro, Este y Oeste) que agrupan a varios cuadrantes mostrados en la tabla “sectores”.

    Sectores
     Norte  Norte Norte  Norte  Norte
     Oeste  Oeste  Centro  Este  Este
     Oeste  Oeste  Centro  Este  Este
     Oeste  Oeste  Centro  Este  Este
     Sur  Sur  Sur  Sur  Sur

    La tabla sectores muestra únicamente la distribución de sectores. No debe crear esta matriz “sectores”.

    Para cumplir con la tarea, deberá implementar lo siguiente:

    a. Una función generaMatriz(listamultas) que recibe una lista de tuplas  con las coordenadas del cuadrante y el valor de la multa (fila, columna, valor). La función deberá retornar una matriz (arreglo Numpy) con el valor agregado de las multas generadas para cada cuadrante.

    Por ejemplo, para:
    listamultas=
    [(0, 0, 120), 
     (1, 2, 330), 
     (3, 4, 123), 
     (4, 2, 62), 
     (0, 0, 50), 
     (4, 4, 89), 
     (0, 3, 25), 
     (2, 0, 43), 
     (3, 2, 21), 
     (0, 0, 120)]
    
    la función retorna:
    totalmultas
     290  0 0  25  0
     0  0  330  0  0
     43  0  0  0  0
     0  0  21  0  123
     0  0  62  0  89

    Nota: las coordenadas de la totalmultas empiezan en 0,0. En listamultas, las coordenadas pueden repetirse al haber varias multas en un mismo cuadrante.

    b. Una función sectorTop(matriz) que reciba la matriz generada en el tema anterior, calcule el sector con el vator total de multas más alto y retorne una tupla con el nombre del sector (Norte, Sur, Centro, Este, Oeste) y dicho valor.

    Para el ejemplo anterior, la función retornará: 
    ('Centro',351)

    Referencia: “Doble columna y uso de zonas prohibidas, problemas por resolver en Guayaquil“, 27 de Agosto, 2015, www.eluniverso.com

    - Archivo original 2Eva_IIT2016.pdf

  • 2Eva_IT2016_T3 Funciones búsqueda y suma

    2da Evaluación I Término 2016-2017. Agosto 30, 2016 /CCPG001

    TEMA 3 (10 PUNTOS)

    a) Implemente una función buscar(listaAnidada, valor) que recibe una lista de listas y retorna verdadero o falso (True o False, 1 o 0) si valor existe en listaAnidada.

    b) Utilice la función buscar del literal a para determinar si un valor existe en una lista anidada y mostrar por pantalla ‘Valor si existe’ o ‘Valor no existe’.

    c) Implemente una función que sume o multiplique valores en una lista anidada.

    - Si se invoca a la función únicamente con la lista como argumento, la función debe retornar la suma de los valores.

    - Si se invoca a la función con un segundo argumento con valor ‘multiplicar’, la función debe retornar la multiplicación de los valores.

    - Para cualquier otro valor para el segundo argumento, la función deberá retornar -1.

    Rúbrica: literal a (2.5 puntos), literal b(2.5 puntos), literal c (5 puntos)

    Referencia: Archivo original 2Eva_IT2016.pdf

  • 2Eva_IT2016_T2 Distancias entre ciudades de Ecuador

    2da Evaluación I Término 2016-2017. Agosto 30, 2016 /CCPG001

    (Editado para tarea, se manteniene el objetivo de aprendizaje)

    TEMA 2. (60 PUNTOS) Las distancias entre ciudades del Ecuador conectadas directamente por una carretera están almacenadas en el archivo ‘Ecuador_Distancias.txt‘ con el siguiente formato:

    Ciudad_de_Partida|Ciudad,Distancia|Ciudad,Distancia|...|Ciudad,Distancia
    
    Por ejemplo:
    Ambato|Azogues,280|Babahoyo,212|Pedernales,318
    Azogues|Pedernales,555|Babahoyo,125
    Pedernales|Ambato,318|Azogues,555
    Babahoyo|Ambato,250
    ...

    Implemente las siguientes funciones:

    a) cargarDatos(nombreArchivo) que recibe el nombre del archivo como string y retorna el diccionario distancias con el siguiente formato:

    distancias = {
     'Ambato':{'Azogues':280,'Babahoyo':212,'Pedernales':318},
     'Azogues':{'Pedernales':555,'Babahoyo':125},
     'Babahoyo':{'Ambato':250} 
     }

    b) ciudadesCercanas(distancias, km) donde distancias es el diccionario generado en el literal a) y km es un valor entero positivo . La función retorna una lista de tuplas con todos los pares de ciudades conectadas directamente por una carretera que estén a una distancia menor o igual que el valor de km.
    La tupla incluye los valores de ‘ciudad1’, ‘ciudad2’, ‘distancia’ que las separa. Por ejemplo:

    >>> ciudadesCercanas(distancias,300) 
    retorna: 
    [('Ambato','Azogues',280), ('Ambato','Babahoyo',212), 
     ('Azogues','Babahoyo',125), ('Babahoyo','Ambato',250)]

    c)  guardarCiudadesCercanas(distancias, listaKms) que recibe el diccionario de distancias y una lista con varias distancias en kilómetros, para generar un archivo con las ciudades separadas a máximo dicha distancia. Por ejemplo:

    >>>guardarCiudadesCercanas(distancias, [300, 100, 250]) 
    genera los siguientes tres archivos: 
    ciudades300.txt, 
    ciudades100.txt, 
    ciudades250.txt.

    El archivo ‘ciudades300.txt’ tendría el siguiente contenido:

    Ambato,Azogues,280
    Ambato,Babahoyo,212
    Azogues,Babahoyo,125
    Babahoyo,Ambato,250

     

  • 2Eva_IT2016_T1 Tendencias en Twitter

    2da Evaluación I Término 2016-2017. Agosto 30, 2016 /CCPG001

    (Editado para tarea, se mantiene el objetivo de aprendizaje)

    Tema 1. (30 PUNTOS) Una tabla denominada tendencias, usada en forma de diccionario, contiene una fecha como clave y un conjunto de etiquetas que representan los tópicos o temas que fueron tendencia en la red social de Twitter.
    Por ejemplo:

    >>> tendencias = {
     '08-22-2016':{'#Rio2016', '#BSC', '#ECU'}, 
     '08-25-2016':{'#GYE', '#BRA'}, 
     '08-27-2016':{'#YoSoyEspol', '#GYE', '#BSC'}
     }

    Implemente las siguientes funciones:

    a) cuentaTopics(tendencias, listaFechas) que recibe el diccionario de tendencias y una lista de fechas en formato tipo texto (mm-dd-aaaa).
    La función retorna un nuevo diccionario con la etiqueta o hashtag(#) como clave y el número de días que la etiqueta fue tendencia en los días de la lista de fechas. Por ejemplo:

    >>> cuentaTopics(tendencias,['08-22-2016', '08-25-2016', '08-27-2016']) 
    
    {'#Rio2106':1, 
     '#GYE':2, 
     '#YoSoyEspol':1, 
     '#BSC':2, 
     '#ECU':1, 
     '#BRA':1}

    b) reportaTrending(tendencias, listaFechas) que recibe los datos del literal anterior y muestre en pantalla:
    b.1) Las etiquetas que fueron tendencia en todos los días en listaFechas
    b.2) Las etiquetas que fueron tendencia en al menos uno de los días en listaFechas

    c) reportaTrending(tendencias, fecha1, fecha2) que recibe el diccionario de tendencias y dos fechas (mm-dd-aaaa), para mostrar por pantalla las etiquetas que fueron tendencia o en fecha1 o en fecha2, pero no en las dos.