3Eva_IIT2018_T2 Jugadores Sudamericano Sub-20

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

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

 

 

2Eva_IIT2018_T1 Hielo y especies en Ártico-Archivo

2da Evaluación II Término 2018-2019. 2-Febrero-2019 /CCPG001 – FIEC
(Editado para tarea, se manteniene el objetivo de aprendizaje)
Sección 1
. (pregunta 1) Descripción del Problema y lectura de datos desde archivo

La World Wide Fund for Nature (WWF) se encuentra realizando el #TenYearChallenge del Ártico. http://diarioecologia.com/el-deshielo-del-artico-aumenta-la-mortalidad-del-oso-polar/

Referencia: https://www.worldwildlife.org/stories/imperiled-polar-bears-face-new-threat-in-alaska-s-arctic-national-wildlife-refuge

Para esto dispone de información sobre la cantidad de hielo y población de animales de diversas especies durante los años 2009 y 2019 en un archivo con el siguiente formato:

Número de filas
Número de columnas
Año,fila,columna,hielo,especie

Ejemplo: ‘artico2009-2019.txt

22
14
Año,fila,columna,hielo(0/1),especie
...
2009,14,8,1,9
...
2019,5,7,0,3

Implemente las siguientes funciones:

  1. crearMatriz(nomArchivo) que recibe el nombre del archivo con los datos de la WWF y retorna una tupla que contiene las siguientes cuatro matrices:
mhielo2009: Cantidad de hielo 2009
1 0 0 1
0 1 1 1
1 0 1 0
1 1 1 0
0 1 0 1
1 1 1 0
mhielo2019: Cantidad de hielo 2019
1 0 0 1
0 1 0 1
1 0 1 0
1 0 1 0
0 1 0 1
0 0 1 0
mAnimales2009: Especies de animales 2009
1 2 4 4
2 5 5 3
1 3 9 1
1 1 4 2
4 22 4 7
1 1 14 4
mAnimales2019: Especies de animales 2019
3 2 4 1
0 11 3 5
1 0 67 1
2 22 3 2
13 13 2 3
3 0 1 0

En las matrices de hielo cada valor uno (1) en una celda representa la presencia de hielo.

En las matrices de animales cada celda representa la presencia de un animal de una especie usando una cierta codificación, como la del ejemplo:

0: No hay animal 
1: Lobo ártico 
2: Oso Polar 
3: Reno 
4: Foca 
5: ...

Rúbrica: numeral 1 (15 puntos): abrir y cerrar archivo, procesar lineas de tamaño de matriz, crear matrices, procesar líneas de datos de matriz, llenar matrices.

3Eva_IT2018_T1 Choferes y Rutas Trailers

3ra Evaluación I Término 2018-2019. 14-Septiembre-2018 /CCPG001 – FIEC
(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

2Eva_IT2018_T2 Pago nomina mensual

2da Evaluación I Término 2018-2019. 31-Agosto-2018 /CCPG001 – FIEC
(Editado para tarea, se mantiene el objetivo de aprendizaje)

Tema 2. (50 puntos) Una compañía, con miles de empleados y varias sucursales en el país, paga sus salarios por hora clasificadas como:

– horas regulares (HR),
– horas fuera de horario normal (HER),
– fines de semana (HFDS) y
– feriados (HF).

El registro de asistencia de los empleados contiene: dia, mes, año, cantidad de horas trabajadas, entre otros mostrados en el archivo ejemplo.

El archivo inicia con líneas del valor en dólares por hora, los factores de pago por tipo, una linea de encabezado y el detalle de las horas trabajadas por empleado. Por ejemplo:

VH,10,Valor Hora en ésta compañía
HR,1,Factor Horas Regulares
HER,1.21,Factor Horas Extras en dias Regulares (lunes-viernes)
HFDS,1.37,Factor Horas en Fin De Semana (Sabado o domingo)
HF,1.39,Factor Horas en Feriado
Fecha,dia,feriado,ID,nombre,sucursal,ciudad,horas-trabajadas
...
10-Agosto-2018,5,Si,FG848801,Fabricio Granados,River Mall,Cuenca,1
10-Agosto-2018,5,Si,GH907603,Segunda Vez Zambrano,River Mall,Cuenca,1
09-Agosto-2018,4,No,FG848801,Fabricio Granados,River Mall,Cuenca,9
...

Las horas extras en días regulares se calculan después de la 8va hora de trabajo.

Si el empleado trabajó en un dia feriado, que también es fin de semana, el factor aplicado es el más alto, es decir feriado.

Desarrolle las funciones descritas a continuación y un programa para calcular los valores a pagar para cada empleado.

a) calcularHoras(linea). Recibe una línea del archivo y determina el número de horas trabajadas para cada categoría. El resultado es una tupla con el identificador del empleado, ciudad y horas trabajadas regulares, extras, fines de semana y feriado.

>>> linea = "09-Agosto-2018,4,No,FG848801,Fabricio Granados, River Mall, Cuenca,9"
>>> calcularHoras(linea)
('FG848801','Cuenca',8,1,0,0)

b) leerData(nomA). Recibe el nombre del archivo de nómina (nomA) correspondiente a un mes de un año y retorna una tupla de tres elementos: (totales, mes, año).   Totales es un diccionario con la suma en dólares de HR, HER, HFDS y HF trabajados por cada empleado con la siguiente estructura:

totales = {'Cuenca':
            {'FG848801': {'HR': 530.0, 'HER': 36.30,
                          'HFDS': 0.0, 'HF': 13.89},
             'GH907603': {'HR': 425.0, 'HER': 48.30,
                          'HFDS': 13.70, 'HF': 13.90}
             ...
             }
          'Quito' :
            {...},
          ...
          }

c) generaReporte(nomA). Recibe el nombre del archivo de nómina (nomA) correspondiente a un mes de un año y genera un nuevo archivo reporte para cada ciudad.
Cada archivo reporte tiene como nombre «ciudadMes-Año.txt» y contiene: cabecera y la siguiente información por cada empleado:

idEmpleado, total$HorasRegulares, total$HorasExtras(HER+HFDS+HF)

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

Referencia: Archivo original 2daEvaI_Term2018.pdf

3Eva_IIT2017_T2 Biblioteca videojuegos

3ra Evaluación II Término 2017-2018. Febrero 23, 2018 /CCPG001 – FIEC
(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

2Eva_IIT2017_T2 Reporte comercio internacional

2da Evaluación II Término 2017-2018. Febrero 14, 2018 /CCPG001 – FIEC
(Editado para tarea, se mantiene el objetivo de aprendizaje)

Tema 2. (55 puntos) Para el intercambio comercial entre paises se registran las  transacciones de compra/venta de productos por categoría.

Las categorías agrupan productos como: flores, frutas, maderas, etc.

La categoría ‘flores’ contiene: claveles, rosas, tulipanes, girasoles, etc. mientras que frutas tiene a cacao, banano, etc.

Las transacciones para cada catetoría se almacenan en archivos diferentes.

Ejemplo de archivo: Flores.txt, Maderas.txt

Comprador, Vendedor, Producto, UnidadesVendidas, Ventasen$, Fecha
Estados Unidos,Ecuador,rosas,59284,631432.21,2018-01-10
Holanda,Japon,tulipanes,2384,12424.87,2017-11-22
...
Estados Unidos,Ecuador,girasoles,38284,331432.75,2018-02-01

Note que un país puede vender el mismo producto al mismo comprador pero en una fecha diferente.

a) Elabore una función calculaTotales(categoria) que procesa los datos del archivo ‘categoria.txt’ y determina los totales de las transacciones entre países. Los totales se muestran en un diccionario de la forma:

totales ={(comprador,vendedor,producto): totalUnidades}

Por ejemplo, si en la categoríaFlores’, ‘Estados Unidos’ le compró ‘rosas’ a ‘Ecuador’ en 12 fechas diferentes, el total deberá ser la suma de los valores de las 12 transacciones:

{('Estados Unidos', 'Ecuador', 'rosas'): 257868}

b) Escriba una función consolidado(nomArchivo, categorias) que dada una lista de categorías genera el listado del acumulado de unidades vendidas por comprador, vendedor y producto.

El resultado se almacena en el archivo ‘nomArchivo.txt’ con la siguiente estructura:

Comprador,Vendedor,Categoría,Producto,TotalUnidadesVendidas

Para el resto del ejercicio, asuma que dispone de una función crearMatriz(narchivo) que recibe el nombre del archivo consolidado y devuelve una tupla con tres elementos:
(1) Matriz M cuyas filas representan países vendedores, columas representan productos ordenados alfabeticamente dentro de cada categoría y las celdas representan ventas totales en unidades.
(2) lista con las etiquetas de las filas y
(3) lista con las etiquetas de las columnas.

c) La función ventasCategorias(nomArchivo, dicCat) realiza un reporte por categoría de los 5 países que han vendido menos productos.

Cada reporte se almacena en un archivo ‘total_categoria.txt’.
Los datos provienen del archivo consolidado nomArchivo.txt y un diccionario donde las claves son las categorías y los valores son listas con todos los productos.
Los productos se encuentran ordenados alfabeticamente dentro de cada categoría, las categorías no están ordenadas alfabéticamente.

Cada archivo tendrá la siguiente estructura:

País,Total_Ventas

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


Referencia: Archivo original 2Eva_IIT2017.pdf

archivos usados: Flores.txtMaderas.txt
para obtener respuestas: categoriasconsolidado.txt, totalFlores, totalMaderas

3Eva_IT2017_T1 Archivos de notas por semestre

3ra Evaluación I Término 2017-2018. Septiembre 16, 2017 /CCPG001 – FIEC
(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

2Eva_IT2017_T1 Contar palabras de un archivo

2da Evaluación I Término 2017-2018. Septiembre 2, 2017 /CCPG001 – FIEC
(Editado para tarea, se mantiene el objetivo de aprendizaje)

TEMA 1 (40 PUNTOS). Para el texto de un libro se requiere generar las estadísticas del uso de palabras . Dispone también de una lista con conectores = [‘la’, ‘con’, ‘de’, ‘y’, ‘…’]  que son palabras que no agregan mayor significado al texto.

Como ejemplo, el archivo con nombre=’ textolibro.txt ‘ contiene:

Con la ayuda de un grupo de amigos y de valientes aliados Frodo emprende un peligroso viaje con la
misión de destruir el Anillo Único Pero el Señor Oscuro Sauron quien creara el Anillo envía a sus
servidores para perseguir al grupo Si Sauron lograra recuperar el Anillo sería el final de la Tierra
Media Ganadora de cuatro Oscars este inmortal relato sobre el bien y el mal la amistad y el sacrificio
te transportará a un mundo más allá de tu imaginación
...

Desarrolle lo necesario para implementar las siguientes funciones:

a)  cargarArchivo(nombre), que lea el archivo de texto denominado ‘nombre’ para crear una tabla (NumPy con dtype=’U20′), donde cada fila representa una línea y cada columna contiene una palabra de dicha línea.

Notas:
Cada línea del archivo está limitada por ‘\n‘  y cada palabra está separada por un espacio en blanco.
Asuma que cada palabra tendrá 20 caracteres como máximo y que el número máximo de palabras por líneas es 30. Si la línea tiene menos de 30 palabras, las celdas restantes deben ser llenadas con una cadena vacía (»).

b) ocurrencias(palabra, tabla), que tiene como resultado el número de veces que la palabra aparece en la tabla.

c) lineas(palabra, tabla), que entrega un vector (tupla) con los números de fila donde aparece la palabra en tabla.

d) contarPalabras(tabla , conectores) que muestra como resultado una tupla con:
– la cantidad de palabras únicas en el texto (incluyendo los conectores) y
– el número solo de conectores que se incluyen en el texto.
Cada palabra (regular o conector) debe ser contada una sola vez sin importar cuantas veces se repita en el texto.

e) concordancia(tabla, conectores) que obtiene las estadísticas de las palabras  y entrega el diccionario mostrado en ejemplo.
Para el diccionario interno ‘palabras‘ no debe incluir los ‘conectores’. .
Puede apoyarse en las funciones anteriores para generar el diccionario.

Ejemplo:
resultado = 
{
    'NTP': 83,
    'NPC': 22,
    'palabras':{
        'Anillo': {'veces': 3, 'NL': (2,2,3)},
        'Sauron': {'veces': 2, 'NL': (2,3) },
        ...
        }
 }
 Donde,
 NTP = Número total de palabras
 NPC = Número solo de palabras stopwords
 NL = Número de líneas

Referencia del texto: Tolkien, J. R. R. (1991). La comunidad del anillo (Vol. 1). Planeta Publishing.

Archivo Original 2Eva_IT2017.pdf

Rúbrica: literal a (6 puntos + 5 puntos de bono),  literal b y c (6 puntos cada uno), literal d y e (11 puntos cada uno).

2Eva_IT2017_T2 Plantas energía eléctrica

2da Evaluación I Término 2017-2018. Septiembre 2, 2017 /CCPG001 – FIEC

TEMA 2. (50 PUNTOS) Para administrar la nueva matriz energética del Ecuador, se dispone de un diccionario con la información de las plantas de energía y las ciudades que atienden cada una.

Cada ciudad tiene: una tupla con los consumos mensuales (12) del año en megavatios-hora (MWh) y la tarifa de consumo en dólares por megavatio-hora (MWh) que le cobra la planta eléctrica.

Una ciudad puede estar servida por más de una planta eléctrica. No todas las ciudades son servidas por todas las plantas eléctricas.

consumo_energia = {
    'Coca Codo Sinclair': {
        'Quito': { 'consumos':(400, 432, …, 213),'tarifa': 65},
        'Guayaquil': { 'consumos': (120, 55, 32, …, 70),'tarifa': 84},
        ...
        },
    'Sopladora': {
        'Guayaquil':{ 'consumos': (310, 220, 321, …, 200),'tarifa':55},
        'Quito': { 'consumos': (400, 432, …, 587),'tarifa': 79},
        'Loja': { 'consumos': (50, 32, 32, …, 40),'tarifa': 32},
        ...
        },
    ...
    }

Además, dispone del siguiente diccionario con información de ciudad por región :

informacion = {
    'costa': ('Guayaquil', 'Manta', …),
    'sierra': ('Quito', 'Ambato', …),
    'oriente': ('Tena', 'Nueva Loja', …),
    }

Implemente lo siguiente:

  1.  Una función total_anual(consumo_energia, planta, ciudad) que recibe el diccionario consumo_energia, el nombre de una planta y el nombre de una ciudad. La función debe calcular y retornar el total anual de megavatios-hora servido por planta a ciudad. (7 puntos)
  2.  Una función total_plantas_ciudad(consumo_energia, ciudad) que recibe el diccionario consumo_energia y el nombre de una ciudad. La función debe devolver un diccionario cuyas claves corresponden a los nombres de las plantas generadoras que proveen energía a ciudad y los valores corresponden al total anual de megavatios-hora servido por cada planta a ciudad. (13 puntos)
  3.  Una función megavatios_hora(consumo_energia, informacion) que recibe el diccionario consumo_energia y el diccionario informacion . La función retorna el total anual de megavatios-hora consumido por todas las ciudades de la región COSTA. (15 puntos)
  4. Una función facturacion(consumo_energia) que recibe el diccionario consumo_energia y genera un archivo con la facturación total en dólares de los seis primeros meses de cada planta generadora. El archivo resultante se llamará <code?’facturacion.txt’ y tendrá la siguiente estructura: (15 puntos)
Planta,enero,febrero,marzo,...,junio
Coca Codo Sinclair,2903,2145,3010,...,2945
Sopladora,3102,3234,3223,...,3417
…

Referencia: Archivo Original 2Eva_IT2017.pdf

3Eva_IIT2016_T1 Facturar llamadas telefónicas

3ra Evaluación II Término 2016-2017, Marzo 7, 2017 /CCPG001 – FIEC
(Editado para tarea, se mantiene el objetivo de aprendizaje)

TEMA 1. (45 Puntos)  La información de los clientes de una compañía telefónica ubicada en Guayaquil se encuentra  en el archivo llamado clientes.csv.

El archivo está estructurado de la siguiente manera:

Cédula,NúmeroTeléfono,Sector,MinutosLlamadaNacional|MinutosLlamadaInternacional,Estado

Por ejemplo: clientes.csv

1278112648,04-443288,Norte,12|30,Activo
1278112648,04-383056,Sur,50|15,Activo
1302511926,04-325363,Este,90|12,Activo
1174253723,04-430419,Oeste,30|30,Cortado
2061722895,04-356539,Norte,17|40,Cortado
1729478396,04-437289,Centro,4|2,Activo
1174253723,04-324426,Norte,0|9,Cortado
1174253723,04-283497,Norte,15|27,Activo

Para procesar la información se requiere:

1. Crear una función llamada obtenerClientes(nombreArchivo) la cual recibe como parámetro el nombre del archivo con los clientes de la empresa, y devuelve un diccionario con la siguiente estructura:

{
'1174253723': 
{'04-324426':{'sector':'Norte','nac':0,'estado':'Cortado','inter':9},
'04-430419':{'sector':'Oeste','nac':30,'estado':'Cortado','inter':30}
'04-283497':{'sector':'Norte','nac':15,'estado':'Activo','inter':27}},
'1302511926': 
{'04-325363':{'sector':'Este','nac':90,'estado':'Activo','inter':12}},
'1278112648':
{'04-443288':{'sector':'Norte','nac':12,'estado':'Activo','inter':30},
'04-383056':{'sector':'Sur','nac':50,'estado':'Activo','inter':15}},
'1729478396':
{'04-437289'{'sector':'Centro','nac':4,'estado':'Activo','inter':2}},
'2061722895':
{'04-356539':{'sector':'Norte','nac':17,'estado':'Cortado','inter':40}}
}

2. Crear una función llamada generarFactura(dclientes) la cual recibe como parámetro el diccionario de clientes generado en el literal anterior, y genera un archivo por cada cliente, cuyo nombre es la cédula del cliente, y el contenido corresponde a los valores a pagar por cada cliente. La estructura del archivo es la siguiente:

Archivo 1278112648.txt
Empresa Telefonica de Guayaquil
Cliente :1278112648
Detalle Deuda:
04-443288 nac:0.36 inter:1.5 total:1.86
04-383056 nac:1.5 inter:0.75 total:2.25
Total a Pagar:4.11

Para calcular los valores a pagar considere las siguientes
tarifas:
Tarifa Nacional: 0.03 el minuto
Tarifa internacional:
● Menos de 60 min: 0.05 el minuto
● Entre 60 y 90 min: 0.04 el minuto
● Más de 90 min: 0.03 el minuto

3. Crear una función llamada estadisticaSector(dclientes,sector) que recibe como parámetro el diccionario de clientes generado en el literal 1 y el sector, y devuelve un diccionario con el promedio de minutos de llamadas nacionales e internacionales que han realizado los números telefónicos del sector en estado ‘Activo’.

Por ejemplo:
>>> estadisticaSector(dclientes,”Norte”)

Respuesta:
{'Nacionales': 13.50, 'Internacionales': 28.50}

Referencia: Archivo original 3raEvaIIT2016.pdf