1Eva_IT2019_T4 Prueba de escritorio

1ra Evaluación I Término 2019-2020, Julio 5, 2019

Tema 4. (10 puntos)

¿Qué muestra el siguiente código? Justifique su respuesta

import numpy as np
arr = np.array([3,2,1,5,4,2,4,1])
d = "eaiuo"
p = '*'
for a in range(arr[arr <= 3].size):
  p = p + d[a] * (arr == a).sum() + ​'​\n​'
print(p)

1Eva_IT2019_T3 Componentes para Vehículos

1ra Evaluación I Término 2019-2020, Julio 5, 2019
(Editado para tarea, se mantiene el objetivo de aprendizaje)

Tema 3. (50 puntos)

La fábrica ACME se encarga de fabricar diversos componentes para vehículos. Para esto, tiene varias líneas de fabricación.

Asuma que tiene los siguientes arreglos:

P  = np.array(["ct-32", "mto-990", "ct-32"...])
PF = np.array([789, 1500, 900 ...])
PD = np.array([26, 35, 70, ...])
D  = np.array([300, 12, 100, ...])
CF = np.array([1000, 2000, 1100, ...])

Donde​ P​ es un arreglo con los códigos de las piezas fabricadas.
El arreglo​ PF tiene la cantidad total de piezas fabricadas en el día.
El arreglo​ PD indica la cantidad de piezas defectuosas por producto en el día.
El arreglo​ D ​indica el día del año de fabricación de la pieza (1 a 365).
Finalmente, el arreglo ​CF ​indica cuales la capacidad máxima de productos que se pueden fabricar, para cada tipo de pieza, en un día determinado.

​ Un mismo producto se puede fabricar varias veces al año pero no varias veces en un mismo día.

a. ​Escriba una función llamada​ produccionAnual(codigo,P,PF) que retorne la cantidad total de piezas ​código​ fabricadas en el año.

b. El rendimiento de fabricación de un producto se mide de la siguiente forma:

rendimiento = (total_piezas_fabricadas - total_piezas_defectuosas)/total_capacidad

Escriba la función rendimientoPromedio(codigo, P, PF, PD, CF, D)​ que retorna el rendimientopromedio diario para ​codigo​. El rendimiento promedio diario es igual a rendimiento/total_dias_fabricacion.

c. ​Escriba la función ​porcentajeAnualDefecto(codigo, P, PD, PF)​, que retorna el porcentaje de defectos que tiene un ​código​. El porcentaje de defectos se calcula como sigue:

porcentaje_defectos = (total_piezas_defectuosas/total_piezas_fabricadas)*100

d. Escriba la función ​productosDefectuosos(codigos, P, PF, PD, porcentajemax)​, que retorna un arreglo con los códigos de los productos que están en la lista ​codigos​ y que tengan porcentaje de defectos mayor a l valor dado por la variable «porcentajemax»​.

e. ​Escriba la función ​minimoPorcentajeDefecto(P, PF, PD)​, que retorna como resultado el código del producto con el menor porcentaje anual de defectos.

Rúbrica: literal a (6 puntos), literal b (12 puntos), literal c (12 puntos), literal d (10 puntos), literal d (10 puntos).

1Eva_IT2019_T2 Consumo de datos por Aplicación

1ra Evaluación I Término 2019-2020, Julio 5, 2019
(Editado para tarea, se mantiene el objetivo de aprendizaje)

Tema 2. (20 puntos)  Asuma que tiene una lista con el consumo de datos de las aplicaciones en su celular durante un mes, semejante a lo mostrado en el siguiente ejemplo:

junio = ['Facebook-10Megas', 'Spotify-55Megas', 'Spotify-112Megas', 'Whatsapp-12Megas',...]

Observe que las aplicaciones en la lista se pueden repetir.

Muestre por pantalla la cantidad de “Megas” que ha utilizado durante el mes por cada aplicación.

1Eva_IT2019_T1 Juego de las Ruedas

1ra Evaluación I Término 2019-2020, Julio 5, 2019
(Editado para tarea, se mantiene el objetivo de aprendizaje)

Tema 1. (20 puntos)

Escriba un programa que implemente el “Juego de las Ruedas”.

Para esto genere aleatoriamente una lista de 15 elementos, donde cuatro elementos deben decir “Rueda” y los otros once “X”.

Luego el programa deberá pedirle al jugador que ingrese por teclado índices entre 0 y 14 (​validar) correspondientes a la posición de la rueda.

  • Asuma que el jugador siempre ingresa índices distintos.
  • Si el índice ingresado por el usuario corresponde al de una “Rueda”, gana $1000.
  • Si el jugador encuentra las cuatro “Ruedas” se gana un carro. ​
  • El jugador tiene siete intentos para hallar las cuatro “Ruedas”.
  • El juego termina cuando encuentra las cuatro “Ruedas” o ha usado todos los intentos​.

En cada intento muestre por pantalla el número total de “Ruedas” encontradas hasta el momento. Al final muestre  el premio que recibe el jugador (cantidad de dólares o la palabra “carro” si encontró las cuatro ruedas).

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)

1Eva_IIT2018_T2 Juego conocimiento (Ahorcado)

1ra Evaluación II Término 2018-2019, Noviembre 23, 2018. CCPG001
(Editado para tarea, se mantiene el objetivo de aprendizaje)

Tema 2. (30 puntos) Para un juego  llamado «conocimiento», dispone de una lista que contiene un número determinado de ‘palabras’
El juego tiene las siguientes reglas:

  1. Al inicio, se selecciona aleatoriamente una palabra secreto de la lista de palabras.
  2. Como una pista, aleatoriamente se escoge una letra de la palabra, que sea consonante y se la muestra entre los espacios por adivinar de secreto.
    Por ejemplo, si secreto es ‘ESPOL’ y la letra sorteada es ‘S’, se mostrará:

    '-S---'
  3. Se pide al jugador ingresar una letra, indiferente si es mayúscula o minúscula.
    Si la letra  e encuentra en secreto se muestra la letra adivinada en la posición que corresponde.

    Letra: L
    '-S--L'
  4. El máximo de intentos para el jugador es el doble de letras de la palabra secreto.
  5. Al final muestre si el usuario ganó o perdió y la cantidad de intentos usados,

Escriba un programa en Python para implemetar el juego.


Sugerencia: Realice una función cambialetra(secreto, letra, estado) para revisar si letra se encuentra en secreto y cambiar el estado del juego.
En el ejemplo, el estado contiene ‘-S—‘

Referencia: http://blog.espol.edu.ec/ccpg1001/2eva_it2005_t3-adivina-palabra-ahorcado/

1Eva_IIT2018_T1 Prueba de escritorio

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

Tema 1. (20 puntos)

(10 puntos) ¿Qué imprime el siguiente código? Justifique su respuesta

lista = [89, 45, 23, 17, 55, 95, 13, 41, 28, 11]
lista.sort()
promedio = sum(lista)//len(lista)
print(promedio)
menores = []
i = 0
while lista[i] < promedio:
    menores.append(lista[i])
    i +=1
print(menores)

(10 puntos) ¿Qué imprime el siguiente código? Justifique su respuesta

pal = 'Se van en sus naves'
b = pal[::-1].replace(' ', '').lower()
pal_b = pal.lower().replace(' ', '')
if pal_b == b:
    print('Es palíndromo')
else:
    print('No es palíndromo')
NOTA: Asuma que este tema NO tiemen errores de compilación. Si usted cree que hay algún error de compilación, consúltelo inmediatamente con su profesor

1Eva_IT2018_T2 Desempeño de jugadores mundial futbol

1ra Evaluación I Término 2018-2019, Junio 29, 2018. CCPG001
(Editado para tarea, se mantiene el objetivo de aprendizaje)

Tema 2. (50 puntos) Dispone de una tabla con el desempeño histórico (estadística) de los jugadores equipos (país) que participan en el Mundial de Futbol:

Los jugadores se encuentran ordenados por equipos siguiendo el orden del listado de países siguiente:

paises = ['Portugal', 'Brasil', … , 'Argentina']

Dispone de otra tabla con los equipos (país) y jugadores, conformada como una lista que contiene como elementos otras listas (lista de listas):

pais_jugadores = [prtgl, 
                  brsl,
                   …, 
                  argntn]

Cada elemento de la tabla pais_jugadores  contiene los nombres de los jugadores registrados en cada equipo:

 prtgl = ['Cristiano Ronaldo', …]
  brsl = ['Neymar Jr.', … ]
   …
argntn = [ …, 'Lionel Messi']

con los datos disponibles en las tablas y usando instruciones de Python, se requiere:

a. Determinar el país con el promedio de goles más alto.

\text{promedio de goles} =\frac{\text{goles anotados del país}}{\text{numero de jugadores del país}}

b. Contar cuántos jugadores españoles tienen una efectividad mayor que la efectividad promedio de España.

\text{efectividad} = \frac{\text{goles anotados}}{\text{Tiros directo al arco}}

c. Mostrar la lista con los nombres de los jugadores que tienen más del 76% de posesión del balón .

d. Mostrar el jugador con mayor porcentaje de pases acertados, indicando nombre y país al que pertenece.

e. Calcular el promedio mundial por cada una de las características.
( “Goles anotados», «…», «% posesión del balón», «% de pases acertados», «Tiros directos al arco» ).

f. Determine si cada una las características para el jugador «Lionel Messi» están por encima del correspondiente promedio mundial. Muestre el mensaje de respuesta correspondiente:

“Lionel Messi está/no está por encima del promedio mundial”

Sugerencia: Separe el trabajo de ubicar los jugadores de la tabla, del procesamiento de los datos de desempeño.
Para ubicar los jugadores realice una tabla siguiendo las siguientes instrucciones:

1. A partir de los datos pais_jugadores y las listas de jugadores, bosqueje la tabla que se forma como referencia.

2. Unifique en un vector jugadores a todos los de cada país.

3. Realice una tabla en cuyas filas ubique cada pais  con el índice [desde, hasta, cuantos] que indica las posiciones desde/hasta dónde se cuentan los jugadores para cada pais, además de la cantidad de jugadores.

Ésta última tabla permitirá ubicar a los jugadores por países.

Para probar los algoritmos, puede usar los datos de las tablas simplificadas para prueba:

desempeno = np.array([[ 32, 24, 45],
                      [ 90, 84, 91],
                      [ 54, 60, 78],
                      [187,239,112]])
paises = ['Portugal', 'Brasil', 'Argentina']
prtgl =  ['Cristiano Ronaldo']
brsl =   ['Neymar Jr.' ]
argntn = ['Lionel Messi']

pais_jugadores = [prtgl, brsl, argntn]

Referencia: Archivo original 1raEvaI_Term2018.pdf

1Eva_IT2018_T1 Busca especie con ADN

1ra Evaluación I Término 2018-2019, Junio 29, 2018. CCPG001
(Editado para tarea, se mantiene el objetivo de aprendizaje)

Tema 1. (40 PUNTOS) La compañía ACME S.A. está desarrollando un nuevo método para detectar especies en base a su ADN

Para representar una especie por su ADN se utiliza una secuencia S compuesta únicamente de las letras A, C, G y T.

Se tienen como datos:

  • Un listado L de secuencias S y
  • una cadena de referencia R que identifica de forma única a la especie buscada. R no tiene letras repetidas.

La inversa de una secuencia S se determina con los símbolos en orden inverso a lo presentado. Ejemplo: inversa(GATACA) = ACATAG

Implemente un programa que muestre todas las secuencias S que pertenecen a la especie buscada y los índices en la inversa de donde aparece la cadena de referencia R .

Para realizar esta tarea, por cada secuencia S en L :

1. Forme la cadena inversa de la secuencia S .

2. Si la cadena R aparece exactamente dos veces en la segunda mitad de inversa y al menos 4 veces en total, la secuencia S pertenece a la especie buscada.

3. Si S pertenece a la especie buscada, muestre la secuencia S y los índices.

Ejemplo:

L = ['ATTTGCTTGCTATTTAAACCGGTTATGCATAGCGC', 
     'ATTAGCCGCTATCGA', 
     '…']
R = 'CG'

Salida:
Secuencia: ATTTGCTTGCTATTTAAACCGGTTATGCATAGCGC
Índices:   [0, 2, 7, 25, 29]

Secuencia: ...
Índices:   ...

Referencia: Archivo original 1raEvaI_Term2018.pdf