3Eva_IIT2018_T2 Jugadores Sudamericano Sub-20

3ra Evaluación II Término 2018-2019. 15-Febrero-2019 /CCPG001

Tema2. (60 puntos) Asuma que tiene un archivo por cada partido jugado en el Sudamericano Sub-20. Cada archivo tiene información con datos de los jugadores que participaron en el partido con el siguiente formato:

Ejemplo:
Pais,Jugador,Tarjetas_Amarillas,Tarjetas_Rojas,Goles,Minutos,KM_recorridos
...
Ecuador,Jose Cifuentes,1,0,0,75,6.3
Uruguay,Sebastian Caceres,2,1,0,90,7
Ecuador,Leonardo Campana,0,0,1,87,10
...

Implemente las siguientes funciones:

1.  actualizaDiccionario(nomArchivo,dic) que recibe el nombre de un archivo con los datos del partido y actualiza el diccionario de totales por jugador que tiene el siguiente formato:

dic = {'Ecuador': {'Leonardo Campana': {'TA': 0,
                                        'TR': 0,
                                        'Goles': 1,
                                        'Minutos': 87,
                                        'KM': 10.0}},
       'Uruguay': {'Sebastian Caceres': {'TA': 2,
                                         'TR': 1,
                                         'Goles': 0,
                                         'Minutos': 90,
                                         'KM': 7.0}
                   }
       }

2. buenDeportista(jugador, dic) que recibe el nombre de un jugador y el diccionario de totales y determina si ese jugador puede ser catalogado como un «buen deportista»; la función retorna «True» o «False» . Un jugador se considera «buen deportista»si ha recibido menos de dos tarjetas por cada 270 minutos de juego.

3.JugadorAtleta(jugador,dic) que recibe el nombre de un jugador y el diccionario de totales, determinando si el jugador ha corrido como mínimo el promedio de lo que han corrido los jugadores de su pais y ha anotado al menos un gol; la función retorna «True» o «False»

4. paisBuenasPracicas(pais,dic) que recibe el nombre de un país y el diccionario de totales, analizando si ese país puede ser nominado para el «Best Practices award». Un país puede ser nominado a este premio si TODOS los jugadores del país pueden ser catalogados como «buen deportista». La funcion retorna «True»o «False»

Escriba un programa que:

5. Forme el diccionario de totales a partir de una lista con los nombres de los archivos de datos de los partidos. Asuma que tiene una lista para esta tarea:

L = ['br-ur.csv', ...,'ec-vn.csv']

6. Muestre los siguiente datos por país:

a. Porcentaje de jugadores atletas. es decir e número de jugadores atletas dividido para el total de jugadores del país.

b. Goles por Km recorrido, es decir el número de goles del país dividido para el total de Km recorridos por todos sus jugadores

7. Muestre los países nominados para el «Best Practices award

8 Muestre la nómina de jugadores atletas con su respectivo país.

Rúbrica: numeral 1(15 puntos), numeral 2 (9 puntos), numeral 3 (9 puntos), numeral 4( 9 puntos), numeral 5(2 puntos), numeral 6 (5 puntos cada literal), numeral 7 (3 puntos), numeral 8 (3 puntos).


Referencia: Ecuador clasifica al mundial de Polonia sub-20 tras empate de Colombia y Uruguay. https://www.eluniverso.com/deportes/2019/02/10/nota/7183619/ecuador-clasifica-mundial-polonia-sub-20-tras-empate-colombia

 

3Eva_IIT2018_T3 Prueba de escritorio, arreglos

3ra Evaluación II Término 2018-2019. 15-Febrero-2019 /CCPG001

Tema 3 (10 puntos) ¿Qué muestra en la salida el siguiente código? Justifique su respuesta

import numpy as np

letras = np.array([['E','B','A','O'],
                   ['G','P','L','A'],
                   ['I','J','K','S'],
                   ['R','V','U','S']])

numeros = np.array([[93,58,63,21], 
                    [31,60,44,72],
                    [29,51,50,32],
                    [85,11,15,67]])

V1 = numeros[numeros>=60]
V2 = letras[numeros>=60]
V2 = V2[np.argsort(V1)]
for letra in V2:
    print(letra,end='')
print('!')

3Eva_IIT2018_T1 texto aleatorio

3ra Evaluación II Término 2018-2019. 15-Febrero-2019 /CCPG001

Tema 1. (30 puntos) Asuma que tiene una lista T de Términos. Un Término puede  ser una palabra o un o de los siguientes tres símbolos:
punto (.), coma (,) y guión(-).

Desarrolle un programa que forme un texto usando las siguientes reglas:

  • El texto debe estar compuesto de 73 términos seleccionados aleatoriamente
  • El primer término debe ser una palabra
  • No se puede seleccionar dos símbolos de manera consecutiva. Si eso pasa, seleccione un nuevo término aleatoriamente hasta que sea una palabra.
  • Dos Palabras seguidas deben estar separadas por un espacio.
    Ejemplo: palabra1 palabra2
  • La coma debe estar pegada a la palabra izquierda y separada por un espacio de la palabra a su derecha.
ejemplo palabra1, palabra2
  • El guión debe estar pegado a sus dos palabras.
Ejemplo: palabra1-palabra2
  • El punto debe estar pegado a la palabra de la izquierda y seguido de un salto de línea.
Ejemplo: Palabra 1.

  • No elimine términos de la lista T.

Escriba este texto resultante en un archivo de nombre: literatura.txt

3Eva_IT2018_T2 Producción minera del país

3ra Evaluación I Término 2018-2019. 14-Septiembre-2018 /CCPG001

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

Tema 2. (50 puntos) En el último discurso presidencial, se mencionaron algunos datos sobre las ganancias de algunos minerales del país que llamaron la atención de los ciudadanos.

http://www.pichinchauniversal.com.ec/sector-minero-sera-un-gran-aportador-economico/
http://www.pichinchauniversal.com.ec/sector-minero-sera-un-gran-aportador-economico/

Suponga que tiene todo el texto del discurso con el formato en minúsculas,  las palabras separadas por un espacio, sin signos de puntuacion ni otros símbolos. Los minerales están identificados por el prefijo «mral_» seguido del nombre del mineral. Por ejemplo: ‘mral_oro’, ‘mral_plata’, ‘mral_cobalto’

discurso = '... y el dia de ayer descubrimos en la mina mirador que la cantidad de mral_oro ...'

a) Implemente la función extraerMinerales(discurso) que al recibir el texto del discurso encuentra los nombres de todos los minerales mencionados. El resultado es una lista con los nombres de los minerales que empiezan con mayúscula y no se repiten en la lista.

Por otro lado, suponque que dispone de las tablas de producción para cada mineral de las canteras del país, costos totales de extracción, costos totales de transporte, los nombres de los minerales y minas asociados a las filas y columnas de las tablas, y los precios cada mineral, semejantes a los mostrados al final del ejercicio.
Con ésta información implemente las siguiente funciones:

b) La función calcularGanancias(P,C,T,precios)  que calcula las ganancias o pérdidas de cada mineral por mina. La función recibe la lista de precios de venta de los minerales las tres matrices: producción (P) , costos totales de extracción (C) y costos totales de transporte (T).

Adicionamente, considere las siguientes fórmulas:

ganancia = ventas - costos
ventas = producción*precio
costos = costos de transporte + costo de extracción

c) La función gananciaTotal(M, Minerales) determina las ganancias totales de cada mineral de mayor a menor, junto a los correspondientes nombres de mineral.

La función recibe la matriz del literal anterior y la lista de las etiquetas de los minerales (fila de la matriz).
El resultado es una tupla de dos elementos ordenados por ganancia:
– el vector de Numpy de las ganancias totales por mineral
– una lista con los nombres de los minerales.

d) La función top8(discurso, ganatotal) presenta los nombres de los ocho (8) minerales que generaron más ganancias totales  y que fueron mencionados en el discurso. La variable ganatotal corresponde al resultado de la función del literal anterior.

Rúbrica: literal a (1o puntos), literal b (15 puntos), literal c (15 puntos), literal d (10 puntos)

Datos de prueba:

minerales = ['Oro', 'Plata', 'Cobre']
precios   = [38.48,    3.43,    0.01]

minas = ['MIRADOR', 'FRUTA_DEL_NORTE', 'LOMA_LARGA', 'otra']

# produccion
P = np.array([[ 13524000, 121072000,  1204000,  9632000],
              [ 28000000,    952000,  9632000, 96404000],
              [126980000,    896000, 92988000,  9604000]])

# costos totales de extracción
C = np.array([[12.32, 10.23, 23.23, 19.23],
              [ 3.13,  1.78,  2.45,  1,69],
              [ 8.32,  5.25,  6.32,  6.89]])

# costos totales de transporte
T = np.array([[ 43736616, 341786256,  5442080,  28241024],
              [ 76244000,   1827840, 13966400, 435746080],
              [156439360,   1121792,300723192,  10785292]])

Referencia: Archivo original 3raEvaI_Term2018.pdf

3Eva_IT2018_T3 Prueba de escritorio, listas, conjuntos

3ra Evaluación I Término 2018-2019. 14-Septiembre-2018 /CCPG001

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

lista1 = ["A", "e", "a", "b", "a", "D"]
lista2 = ["E", "b", "a", "m", "d"]

lista3 = []

for elemento in lista1:
    if elemento not in lista2:
        lista3.append(elemento)

print(set(lista2).difference(lista3))

print(set(lista3).union(lista1))

print(set(lista2).symmetric_difference(lista1))

Referencia: Archivo original 3raEvaI_Term2018.pdf

3Eva_IT2018_T1 Choferes y Rutas Trailers

3ra Evaluación I Término 2018-2019. 14-Septiembre-2018 /CCPG001

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

Tema 1 (40 puntos). En una empresa de transporte de carga (trailers) se registran para cada fecha, el código de  los choferes que manejaron en una ruta.

https://patiodeautos.com/revista/generales/trailer-electrico-tesla
https://patiodeautos.com/revista/generales/trailer-electrico-tesla

El registro genera un archivo "rutasManejadas2018.txt" en el formato mostrado:

id_ruta, id_chofer, fecha
Guayaquil-Cuenca,SMS,17-05-2018
Guayaquil-Cuenca,AGB,18-05-2018
Guayaquil-Cuenca,SMZ,17-05-2018
Guayaquil-Daule,EVN,17-05-2018
Guayaquil-Daule,AAQ,18-05-2018

Por lo rutinario del trabajo, se ha recomendado que los choferes no repitan una ruta para los últimos n días a partir de una fecha. Para seguir la recomendación se requiere implementar:

a) La función cargarDatos(narchivo) que recibe un archivo de registro y retorna una tupla con:
– un conjunto con los choferes que trabajaron en las fechas  del archivo (id_chofer)
– los datos del archivo en un diccionario con la estructura mostrada.

{'17-05-2018': {'Guayaquil-Cuenca': ['SMS', 'SMZ', ...],
                'Guayaquil-Daule': ['EVN', ...]},
 '18-05-2018': {'Guayaquil-Cuenca': ['AGB', ...],
                'Guayaquil-Daule': ['AAQ', ...]}}

b) La función encontrarChoferes(datos, loschoferes, unafecha, unaruta, n),  que para seguir la recomendación, encuentra aquellos choferes que no manejaron en una ruta, durante los n dias anteriores a una fecha.

c) La función grabarArchivo(datos, loschoferes, unafecha, unaruta, n) que crea un archivo con el resultado de la función anterior con el formato mostrado. El nombre del archico generado se conforma como: «unaruta_unafecha.txt»

Nombre de archivo: Guayaquil-Cuenca_19-05-2018_2.txt

Para la ruta Guayaquil-Cuenca los choferes disponibles para la fecha 19-05-2018 que no hayan manejado 2 dias anteriores son: 
EVN
AAQ

d) Genere todos los archivos para todas las rutas disponibles.

NOTA: Para administrar las fechas, usted ya dispone de una función calcularFecha(unafecha,n) que recibe una fecha y los n días anteriores y determina la fecha pasada. El formato de fecha se maneja en el mismo formato de fecha que el archivo.

>>> calcularFecha('19-05-2018',2)
'17-05-2018'

Rúbrica: Literal a (12 puntos), Literal b(16 puntos), Literal c y d (12 puntos)

Referencia: Archivo original 3raEvaI_Term2018.pdf

3Eva_IIT2017_T2 Biblioteca videojuegos

3ra Evaluación II Término 2017-2018. Febrero 23, 2018 /CCPG001

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

Tema 2. (50 puntos) Suponga que tiene el archivo «videojuegos.csv»con información sobre todo el contenido de su biblioteca de videojuegos.

El archivo tiene la siguiente estructura:

videojuegos.csv
Nombre, Año, Consola, Calificación, Tags (separados por ;)
The Legend of Zelda,86,Famicon Disk System,3.5,RPG;Link;Zelda;Hyrile;Triforce
Double Dragon,87,Arcade,3.7,Beat-em up; Billy;Jimmy;Puñete
The Legend of Zelda,88,NES,4.3,RPG;Link;Zelda;Hyrule;Triforce
...
Halo 5:Guardians,15,Xbox One,4,FPS;Master Chief;Cortana;Covenant

Note que un juego aparecerá listado en el archivo una vez por cada consola en la que fué lanzado.
La categoría del juego se especifica siempre en el primer Tag. Por ejemplo, Double Dragon pertenece a la categoriía Beat-‘em up.

Desarrolle lo siguiente:

a) La función juegosConsolas(nomArchivo, categoria, decada) que recibe el nombre del archivo con la información de los videojuegos, una categoría y número de cuatro dígitos representando una década de años. La función retoma una tupla con 2 elementos. El primer elemento es la lista con los valores únicos  de todos lo juegos de esa década para esa categoría. El segundo elemento es la lista con valores únicos de todas las consolas que tienen juegos para esa década y categoría.

Por ejemplo, para llamar a juegosConsolas('videojuegos.csv','RPG',1980) retorna:

(['The legend of Zelda',  'Phantasy Star', ...], ['NES', 'Famicon Disk System', ...])

b) La función crearMatriz(nomArchivo, categoria, decada) que recibe el nombre del archivo con la información de los videojuegos, el nombre de una categoría de videojuegos y un número de cuatro dígitos representando una década de años. La función deberá leer el archivo y retornar una matriz donde las filas representan los juegos de categoria para la decada , las columnas representan las consolas que tienen juegos de categoria para la decada y las celdas son las calificaciones de cada juego para cada consola. Si un juego no existe para una consola, su calificación deberá ser cero (0).

c) La función mejoresJuegos(nomArchivo, categoria, decada) que recibe el nombre del archivo con la información de los videojuegos, el nombre de una categoría de videojuegos y un número de cuatro dígitos representando una década de años. La función deberá generar el archivo “Mejores.txt” con los cinco mejores juegos de la decada para la categoria , ordenados de mayor a menor por su calificación promedio. Para calcular el promedio de un juego, considere únicamente las consolas en las que fue lanzado (no considere los valores cero). El archivo tendrá la siguiente estructura:

NombreNombre,Promedio_calificación

d) La función colecciones(nomArchivo, palabras) que recibe el nombre del archivo con la información de los videojuegos y una lista de palabras. La función deberá retornar otra lista de valores únicos con los nombres de todos los juegos que sus Tags contengan todos los términos de la lista palabras .

Rúbrica: literal a (15 puntos), literal b (17 puntos), literal c (18 puntos), literal d Bono (5 puntos)

Referencia: Archivo original 3Eva_IIT2017.pdf

3Eva_IIT2017_T1 Mantenimiento vehículos

3ra Evaluación II Término 2017-2018. Febrero 23, 2018 /CCPG001

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

Tema 1. (40 puntos)  CuidaVehículo.com requiere una aplicación para gestionar el mantenimento vehículos clasificados por tipo: ‘preventivos‘ y ‘correctivos‘ .

Dispone de la tabla de mantenimientos recomendados por tipo para cada parte del vehículo. La tabla contiene los parámetros que considera el número de días y recorrido en Kilómetros desde el último mantenimiento.

El historial registra la placa del vehículo, el cliente, parte, tiempo y recorrido desde el último mantenimiento.

Las tablas son siempre usadas como parámetros de ingreso en las funciones y se almacenan en diccionarios con la estructura mostrada:

dictMantenimiento = {
    'preventivo': [('llantas',  60,  4500),
                   ('bujias',   45,  3000)],
    'correctivo': [('llantas',  90,  6000),
                   ('zapatas', 120, 10000)]
    }

dictHistorial = {
    'GEC-2411': {
        'propietario': 'Eduardo Cueva',
        'registro': [('llantas',  12, 32500),
                     ('zapatas', 180, 500)]
        },
    'GAA-0321': {
        'propietario': 'Andrea Martinez',
        'registro': [('bujias',   40, 500),
                     ('zapatas', 120, 100)]
        }
    }

a) Elabore una función mantenimientos(strPlaca, dictHistorial, dictMantenimiento) que dada una placa de vehículo, realiza una lista de las partes con el tipo de mantenimiento recomendado: ‘preventivo‘, ‘correctivo‘ o ‘ninguno‘.

Solo un tipo de mantenimiento se realiza para cada parte del vehículo, considerando siempre el parámetro de recorrido en Kilómetros. En el caso que una parte supera el parámetro para ambos tipos de mantenimiento, se da prioridad al mantenimiento ‘correctivo‘.

El resultado es una lista de tuplas con las partes y tipo de mantenimiento.

b) Escriba una función semaforo(strPlaca, dictHistorial, dictMantenimiento) que establece un código de colores para cada tipo de mantenimiento: , amarillo: ‘preventivo‘ , rojo: ‘correctivo‘ y verde: ‘ninguno‘.

El resultado es un diccionario que tiene como clave el color y como datos una lista con las partes correspondientes a cada tipo de mantenimiento.

c) Realice una función recomendar(strparte, strtipoMantenimiento, dictHistorial, dictMantenimiento) que entrega una lista de placas de vehículos que requieren el tipo de mantenimiento para una parte dada.

Rúbrica: literal a (15 puntos), literal b (15 puntos), literal c (10 puntos)

Referencia: Archivo original 3Eva_IIT2017.pdf

3Eva_IIT2017_T3 Prueba de escritorio, listas

3ra Evaluación II Término 2017-2018. Febrero 23, 2018 /CCPG001

Tema 3. (10 puntos)

a) Considere las siguente instrucciones en python. Justifique su respuesta de la salida en pantalla.

a = 'ABACDEF'
b = [4,2,1,3,2,2,3]

d = ''
for i in a:
    if i not in d:
        d += i*b[ list(a).index(i)]
    else:
        d = d.replace(i,'')
        
print(d)

b)  indique la salida por pantalla de las siguientes instrucciones en python. Justifique su respuesta

a = [1,3,5,6,8]

b = []
for i in range(len(a)):
    b.append(i)
    b.insert(i,len(b))

print(b)

Referencia: Archivo original 3Eva_IIT2017.pdf

3Eva_IT2017_T1 Archivos de notas por semestre

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

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

TEMA 1 (45 puntos). Considere que tiene varios archivos cuyos nombres tienen el formato
notas-año-término.csv
y su contenido en cada linea es:

matrícula,materia,nota_parcial,nota_final,nota_mejoramiento,AP/RP

Ejemplos de los archivos:

notas-2015-I.csv

201521342,Fundamentos de Programación,80,95,99,AP
201321454,Economía,12,21,33,RP
201321454,Fundamentos de Programación,45,76,89,AP
…

notas-2013-II.csv

200901456,Física I,80,91,73,AP
201321454,Química,45,57,73,AP
201121372,Economía,73,82,83,AP
201321454,Fundamentos de Programación,11,9,9,RP
 …

Desarrolle los siguientes literales:

a) Elabore la función academico(narchivos) recibe los nombres de los archivos de notas (tupla) para cada semestre y retorna un diccionario de notas con la estructura mostrada.

narchivos = (notas-2013-II.csv, notas-2015-I.csv)

notas =
{201321454: {'2013-II': [('Química', 45, 57, 73, 'AP'),
                         ('Fundamentos de Programación', 
                            11,9,9, 'RP')],
             '2015-I': [('Economía', 12, 21, 33, 'RP'),
                        ('Fundamentos de Programación', 
                            45,76,89, 'AP')],
             ...},
 200901456: {'2013-II': [('Física I', 80, 91, 73, 'AP'),
                         ...],
             ...},
 ...}

b) Implemente la función semestres(notas, matricula) que recibe las notas (diccionario) y un número de matrícula  de un estudiante para entregar todos los semestres en que ha tomado materias (tupla) .

c) Realice la función nota_academico(notas, matricula, materia) que recibe las notas (en diccionario), una matrícula y el nombre de una materia y determina la nota total para esa materia.

La nota total se calcula como el promedio de las dos notas más altas entre parcial, final y mejoramiento. Si el estudiante aún no ha tomado la materia, se presenta como nota cero (0). Si el estudiante en más de una ocasión ha tomado la materia se obtiene la nota con el promedio más alto.

d)  Elabore la función mas_aprobados(notas, semestre) que devuelve el nombre de la materia con mayor cantidad de estudiantes aprobados (estado AP) en el semestre indicado.

Rúbrica: Literal a (10 puntos + 5 puntos de bono) b (5 puntos), c y d (15 puntos)


Ejemplo:

narchivos=('notas-2015-I.csv',
           'notas-2013-II.csv')
matricula = 201321454
materia = 'Fundamentos de Programación'
semestre = '2015-I'
Se obtiene:
--- para 201321454: 
semestres que estudió: ('2015-I', '2013-II')
notas final para Fundamentos de Programación: 82.5
--- En el semestre 2015-I: 
la materia con alto indice de aprobación es: Fundamentos de Programación

Referencia: Archivo original 3Eva_IT2017.pdf