1Eva_IIT2017_T4 Prueba de escritorio, listas

1ra Evaluación II Término 2017-2018, Diciembre 1, 2017. CCPG001

Tema 4. (10 puntos)
1. Indique la salida por pantalla del siguiente código. Justifique su respuesta.

f = ['a', 'c', 'z', 'm', 'k']
g = [3,4,5,6,5,7]
t = ''

for c in f:
    a = f.index(c)
    b = g[:a]
    t = t + (c*len(b))
    
print(t)

2. Indique la salida por pantalla del siguiente código. Justifique su respuesta.

import numpy as np

vector = np.array([1,5,6,6,5,2,1,3,7,9,0,0,1,4,8])

print(np.unique(vector[vector%2==0]).size)

a = vector[vector%2==0]
b = np.unique(a)

print(a)
print(b)
print(b.size)

Referencia: Archivo original 1Eva_IIT2017.pdf

1Eva_IIT2017_T3 Venta combustibles

1ra Evaluación II Término 2017-2018, Diciembre 1, 2017. CCPG001 – FIEC

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

Tema 3. (40 puntos) Las ventas anuales (en galones) para las estaciones de gasolina en el país  se muestran en la matriz siguiente:

Ventas Primax Alborada PS Los Rios Mobil Cumbayá Lutexsa Cia Ltda Ps Remigio Crespo
Regular 239034 678493 896321 32438 554213
Extra 4568321 6745634 9754008 3242342 3456123
Super 234773 56743 123678 4783 90874
Premium 45672 45212 90781 3904 90431

Las filas representan el tipo de gasolina y las columnas representan las estaciones de gasolina.

Adicionalmente  dispone de los vectores (en Numpy):

tipoGasolina = np.array(['Regular',
                         'Extra',
                         'Super',
                         ...,
                         'Premium'])
gasolinera = np.array(['Primax Alborada',
                       'PS Los Ríos',
                       'Móbil Cumbayá',
                       'Lutexa Cia Ltda',
                       ...,
                       'PS Remigio Crespo'])
distrito = np.array(['distrito1',
                     'distrito2',
                     'distrito1',
                     'distrito2',
                     ...,
                     'distrito4'])
ciudad = np.array(['Guayaquil',
                   'Babahoyo',
                   'Quito',
                   'Guayaquil',
                   ...,
                   'Cuenca'])

El vector tipoGasolina contiene los nombres de los tipos de gasolina comercializadas en el país.

Los vectores: gasolinera, distrito y ciudad, contienen el nombre de la estación, el distrito y la ciudad en la que se encuentra cada estación. Una ciudad se divide en varios distritos y tiene varias gasolineras, resultando en que los nombres en  distritos y ciudades se pueden repetir en los vectores.

Implemente un programa para responder a las siguientes preguntas:

a) Dado un tipo de gasolina, muestre por pantalla los nombres de todas las gasolineras que han vendido en el año más del promedio de venta en galones para ese tipo.

b) Dada una ciudad, y calcule cuántas de sus gasolineras en el año han vendido más de 15 millones de galones en total , considere todas las ventas para todos los tipos de gasolinas.

c) Muestre por pantalla el nombre de la ciudad que más galones ha vendido en el año de gasolina tipo ‘EcoPais’ en el distrito1.

Nota: Para los literales a y b, los valores de selección se deben ingresar por teclado. El programa se debe realizar en Python.

Rúbrica: literal a (12 puntos), b (13 puntos), c (20 puntos).


venta = np.array([
    [ 239034,  678493,  896321,   32438,  554213],
    [4568321, 6745634, 9754008, 3242342, 3456123],
    [ 234773,   56743,  123678,    4783,   90874],
    [  45672,   45212,   90781,    3904,   90431]])


tipoGasolina = np.array(['Regular',
                         'Extra',
                         'Super',
                         'Premium'])

gasolinera  = np.array(['Primax Alborada',
                        'PS Los Ríos',
                        'Móbil Cumbayá',
                        'Lutexa Cia Ltda',
                        'PS Remigio Crespo'])
distrito = np.array(['distrito1',
                     'distrito2',
                     'distrito1',
                     'distrito2',
                     'distrito4'])
ciudad =  np.array(['Guayaquil',
                    'Babahoyo',
                    'Quito',
                    'Guayaquil',
                    'Cuenca'])

Referencia: Archivo original 1Eva_IIT2017.pdf

1Eva_IIT2017_T2 Texto de examen de sangre

1ra Evaluación II Término 2017-2018, Diciembre 1, 2017. CCPG001 – FIEC

Tema 2. (30 puntos) Un asistente de médico tiene la tarea de generar un informe de indicadores a partir del resultado de un examen de sangre  que lo recibe como una cadena de texto.

Los indicadores, por ejemplo: INR, WBC, RBC, TA, etc.,  se pueden identificar por estar siempre en mayúsculas. Todo indicador va seguido de un espacio, un número con decimales, otro espacio y las unidades de medida. Al final del reporte se encuentra el nombre del médico responsable.

Ejemplos:

resultado = "Resultado de Laboratorio 'Su Salud' Nombre del paciente: José Aimas E-mail del paciente: jose.aimas@gmail.com Resultados del laboratorio: INR 1.25 segundos BGT 180.12 mmol/dL HGB 13 g/dL ESR 3.2 mm/hora RBC 4000024.2 cel/ul TA 1.5 ng/dL WBC 123233.23 cel/uL. Los valores de éste informe no representan un diagnóstico. Firma médico responsable: Dr. Juan Pozo"

resultado = "Resultado de Laboratorio 'Sana' Nombre del paciente: Ginger Irene Cruz Jurado Edad: 25 años E-mail: giircrju@espol.edu.ec Resultados: Azucar BGT 180.12 mmol/dL Hemoglobina HGB 13 g/dL Hormonal TA 1.5 ng/dL Médico responsable Dr. Karina Elizabeth Plaza"

Nota: La cantidad de indicadores puede variar. Los puntos no solo aparecen en los decimales, sino también para separar párrafos o en otras ocasiones como las direcciones de e-mail.

Escriba un programa que muestre la información desglosada, el nombre del médico, una recomendación mostrada como doble asterisco en el indicador y descrita al final

Se recomienda al paciente ir al endocrinólogo si su nivel de azúcar (BGT), está por encima de los 150 mmol/dL.

Ejemplo:

INFORME DE LABORATORIO
**********************
INR	     1.25 	segundos
BGT 	   180.12 	mmol/dL
HGB	    13		g/dL
ESR	     3.2 	mm/hora
RBC	4000024.2 	cel/ul
TA 	     1.5 	ng/dL
WBC 	123233.23 	cel/uL
Médico: Juan Pozo

** Su nivel de azúcar es alto, se recomienda ir al endocrinólogo .

Rúbrica: Descomponer y recorrer texto (4 puntos), revisar mayúsculas (5 puntos), valor indicador (4 puntos), unidad indicador (4 puntos), nombre de médico (5 puntos), recomendación (3 puntos), salida (5).

No es necesario presentar el informe en el formato descrito, pero si lo hace, obtendrá 2 puntos extras en el examen.

Referencia: Archivo original 1Eva_IIT2017.pdf

1Eva_IIT2017_T1 Taller de juguetes en polo norte

1ra Evaluación II Término 2017-2018, Diciembre 1, 2017. CCPG001 – FIEC

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

Tema 1 (20 puntos)
Para una época muy agitada en el taller de «Papá Noél» del Polo Norte, se contrata un nuevo administrador.

Se deben realizar varias tareas, cuyos  tiempos de inicio y duración se registran en minutos.

tareas = ['pintar soldados',
          'hornear galletas',
          'armar muñecos',
          'cortar papel de regalo',
           ..., ]
inicio   = [678, 200, 240, 423, ...]
duracion = [300, 800, 456, 112, ...]

Por ejemplo, la tarea 'pintar soldados'
empieza en el minuto 678 del día y 
tiene duración de 300 minutos.

Se debe planificar la mayor cantidad de tareas que se pueden realizar en un día de 1440 minutos, considerando los tiempos de finalización y con preferencia por las tareas que terminan más temprano en el día.

El tiempo de finalización de tarea se calcula como el minuto de inicio+ los minutos de duración.

Ejemplo:
la tarea 'pintar soldados' termina en el minuto
 978 = (678+300) del día.

Escriba un programa que dada la información de tareas, inicio y duración, permita planificar y mostrar el orden de ejecución de las tareas:

+--------------+
|Tareas del día|
+--------------+
1. Cortar papel de regalos
2. Vestir muñecas
3. ...

Nota: asuma que:

  • no existen tareas que finalizan en el mismo minuto
  • en el taller trabajan muchos duendes, no es problema planificar tareas simultáneas.
  • no es necesario que se planifiquen todas las tareas en un mismo dia.

Rúbrica: vector finalización (3 puntos), ordenar (4 puntos) y seleccionar tarea (5 puntos),  verificar limite dia (2 puntos), buscar nombres de tarea (4 puntos), salida (4 puntos),

Referencia: Archivo original 1Eva_IIT2017.pdf

1Eva_IT2017_T1 Palabras puntaje

1ra Evaluación I Término 2017-2018. Julio 01, 2017 /CCPG001 – FIEC

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

TEMA 1. (40 PUNTOS) En el juego de tablero «Scrabble», cuando el jugador forma una palabra, acumula los puntos de los equivalentes para cada letra .

Una palabra se puede crear cruzando otra palabra y usando una letra compartida que  recibe el doble de puntos.

alfabeto = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 
equivale = [1,3,3,2,1,4,2,4,1,9,5,1,3,1,1,3,10,1,1,1,1,4,4,9,4,10]

Realice un programa en que el jugador ingrese varias palabras separadas por comas (‘,‘),  determine el puntaje correspondiente a cada palabra y muestre cuál es la  palabra con mayor puntaje.

Ejemplo: 
>>> 
Analizar: CAS*A*,S*ASTR*E*,R*EY*,A*ZOTE*
CAS*A* 8
S*ASTR*E* 9
R*EY* 11
A*ZOTE* 16
Ganador: A*ZOTE* 16

Nota: Para marcar una letra compartida se añade un símbolo (‘*‘) , suponga que todas las palabras ingresadas terminan con una letra compartida. Todas las letras deben ser mayúsculas, si se ingresa una minúscula será ignorada para el puntaje.

Referencia: Archivo original 1Eva_IT2017.pdf


Rúbrica para tarea: (sobre 10 puntos)

  • algoritmo para buscar posición de letra en alfabeto, no usar palabra.find(letra) (2 punto)
  • determinar puntos por cada letra (2 punto)
  • unificar mayúsculas-minúsculas para comparar ( 1 punto)
  • considerar ‘*’ para doble puntaje por letra (2 punto)
  • analizar palabra letra por letra (1 punto)
  • analizar cada palabra de la frase (1 punto)
  • separar palabras de frase usando “coma” (1 punto)
  • algoritmo estructurado: Inicio, ingreso, procedimiento, salida, fin. Si no es estructurado, PUNTOS = PUNTOS/5

 

1Eva_IT2017_T2 suscriptores de youtubers

1ra Evaluación I Término 2017-2018. Julio 01, 2017. CCPG001 – FIEC

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

Tema 2 . (50 puntos)
Para analizar la popularidad de varios youtubers de España, Ecuador y México, se obtuvieron datos del sitio «SocialBlade» en varias listas y una matriz:

 

espana  = ['elrubiosOMG','VEGETTA777', '...']
ecuador = ['enchufetvLIVE','Kreizivoy','...']
mexico  = ['Yuya','Werevertumorro','...']

En la matriz, para cada youtuber (fila) le corresponde los datos de (columnas): suscriptores, reproducciones de videos, ganancias mensuales y ganancias anuales.

matriz = np.array([
    [  24771906, 5477807839,      21900,     262800],
    [ 184551280, 7046108694,      45500,     546000],
    [     76493,     798122,         36,        430],
    [    133538,   21104851,        156,       1900],
    [  18554394, 1967543913,       6700,      80000],
    [  12548964, 2034702069,      12200,      12200],
    [...]
    ])

Considere las siguientes métricas para cada youtuber:

popularidad = \text{numero de suscriptores} rentabilidad = \frac{\text{ganancias anuales}}{\text{número de suscriptores}}

Realice un programa para encontrar:
1. El youtuber con mayor rentabilidad y el país al que pertenece
2. Los youtubers con mayor rentabilidad de cada país
3. ¿Cuántos youtubers de España tienen más suscriptores que el youtuber mas popular de Ecuador y México?
4. Número promedio de reproducciones de los youtubers con más de un millón de suscriptores
5. ¿Cuántos youtubers de Ecuador hay en cada categoría? Las categorías son:

rango de rentabilidad categoría
0.0 a 0.30 3
0.31 a 0.60 2
>=0.61 1

6.  El país que generó más ganancias anuales y el país que generó menos ganancias anuales. Muestre el mensaje siguiente reemplazando los datos apropiadamente

El país X generó  Z% mas de ganancias que el país Y

Para calcular el porcentaje utilice la siguiente fórmula:
GX: ganancia anuales del país X
GY: ganancias anuales del país Y

porcentaje = \frac{GX-GY}{GY} * 100

Nota: Para los numerales del 1 al 5, el código solo debe realizar el procedimiento para generar los valores pedidos y almacenarlos en variables, no se requiere mostrar datos por pantalla.

Referencias: http://socialblade.com/youtube

Archivo original 1Eva_IT2017.pdf

1Eva_IT2017_T3 Prueba de escritorio, listas

1ra Evaluación I Término 2017-2018. Julio 01, 2017 /CCPG001 – FIEC

TEMA 3 (10 PUNTOS)
a) Dada la lista

L = [12,9,1,3,2,10,20,5, ...]

Genere tres posiciones aleatorias de tal manera que los valores correspondientes sumen al menos 20. Al final muestre la suma de los tres valores seleccionados aleatoriamente.

b) Usando la siguiente lista:

stars = ['Potter', 'Ron Weasley',
         'Dombledore','Hermione Greanger',
         'Hagrid','Voldemort']

¿que mostrarían las siguientes instrucciones?:

print(stars[-4,-2])

print(stars[3][0:stars[3].find(' ')] + stars[1][3:])

Referencia: Archivo original 1Eva_IT2017.pdf

1Eva_IIT2015~T4 Prueba de escritorio, listas

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

Tema 4. (10%) Analice el código fuente de los programas que se muestran a continuación. Seleccione la respuesta correcta y justifique brevemente su respuesta.

4a. Determine la salida por pantalla del siguiente código:

A = [12,23,14,50,30]
for i in range(0, len(A)):
    if A[i] % 2 == 0:
        A.pop(i)
print(A)

a) Error: El símbolo pop no ha sido definido
b) Error: Índice de la lista fuera de rango
c) [23]d)[23, 50]

4b. Determine la salida por pantalla del siguiente código:

a = [5,4,3,2,1,0]
print(a[0], a[a[0]], a[a[-1]], a[a[a[a[2]+1]]])

a) 5 5 5 5
b) 5 0 5 1
c) 5 4 1 4
d) Ninguna de las anteriores

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)