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

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

3Eva_IT2017_T3 Prueba de escritorio – cadenas, listas, índices

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

TEMA 3 (10 PUNTOS)
a. [5 puntos] ¿Qué imprime el siguiente código? Justifique su respuesta.

a = 'mensaje'
c = 'abcdefg'

i = len(c)-1
for b  in a:
    print(b*c.index(c[i]))
    i -= 1

b. [5 puntos] ¿Qué imprime el siguiente código? Justifique su respuesta.

L = [5,3,8,2,7]

A = [0]*10
indice = 3
for valor in L:
    if valor < 6:
        indice -= 1
    else:
        indice += 1
    A[indice] = valor

print(set(A))

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

(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

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

2Eva_IT2017_T3 Prueba de escritorio – cadenas, archivos, listas

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

TEMA 3 (10 PUNTOS)
a. Considere:

archivo = open( 'datos.txt' , 'w' )
archivo.write( 'Días de la semana\n' )
archivo.close()

lista = [ 'lunes' , '\n' , 'martes' , '\n' ,
          'miércoles' , 'jueves' , 'viernes' ]

archivo = open ( 'datos.txt' , 'a+' )
archivo.writelines( lista )
archivo.close()

¿Cuántas líneas de texto tiene el archivo ‘datos.txt’ al final del programa y con qué contenido? Justifique su respuesta. (5 puntos)

b. Muestre la salida por pantalla la ejecución del siguiente código y justifique su respuesta: (5 puntos)

a = set([4,5,9,7,1])
b = set([6,3,8,2,10])
c = set([1,4,5])

d = set([len(a), len(c), len(b)])

f = (a | b) & d
g = (b - c) | d
h = d ^ a

print(f)
print(g)
print(h)

Referencia: Archivo Original 2Eva_IT2017.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