Autor: Edison Del Rosario

  • 3Eva_IT2019_T2 Juego del ahorcado

    3ra Evaluación I Término 2019-2020, Septiembre 13, 2019

    Tema 2. (30 puntos)
    Escriba un programa de Python que implemente un juego de adivinanzas de palabras.

    Considere que para su programa ya están definidas las siguientes variables y función:

    1. Una lista C de las categorías para el juego.

    C = ['Transportes', 'Alimentos', 'Deportes', ...],
    

    2. La función perteneceCategoria(palabra, categoria) que retorna True si palabra pertenece a la categoria, False en caso contrario.

    3. El diccionario puntajes con el siguiente formato:

    puntajes = {'Transportes':{'a':10, 't':4, 'f':5, ...},
                'Deportes': {'a':3, 'z':5, 't':10, ...},
                 ... }

    Para la implementación del juego considere las siguientes reglas:

    r1. El jugador tiene cinco turnos para jugar

    Para cada turno:

    r2. El programa selecciona aleatoriamente una categoría de la lista C

    r3. El programa le pide al jugador que ingrese una palabra para la categoría seleccionada en el paso r2

    r4. Si la palabra pertenece a la categoría dada y no ha sido ingresada en un turno anterior, calcule los puntos totales para la palabra.
    El puntaje de la palabra es la suma de los puntajes de cada una de sus letras, de acuerdo al diccionario puntajes.
    Una letra tendrá puntajes distintos dependiendo de la categoría del paso r2.
    Si la palabra no cumple con las condiciones, el jugador no obtiene puntos en ese turno

    r5. En cada turno, muestre el puntaje obtenido para la palabra ingresada y el puntaje acumulado

    Al final de los cinco turnos:

    r6. El jugador habrá ganado si completa un mínimo de 500 puntos, muestre el mensaje correspondiente “Ganó” o “Perdió”.

  • 3Eva_IT2019_T1 Producción en hacienda

    3ra Evaluación I Término 2019-2020, Septiembre 13, 2019

    Tema 1. (60 puntos)
    Asuma que tiene un archivo con la información de los productos agrícolas cosechados por una hacienda durante todos los días del año 2018.

    La información se encuentra en el siguiente formato:

    codigo1,codigo2,codigo3,...,codigoN
    codigo_producto,fecha(dd-MMM-aaaa),cantidad_cosechada
    

    Ejemplo:

    100034,100312,100021,...,201245,432198 
    codigo_producto,fecha(dd-MMM-aaaa),cantidad_cosechada
    100034,02-ENE-2018,5
    100021,02-ENE-2018,15
    100021,07-ENE-2018,11
    432198,20-ENE-2018,12
    ...
    

    Nota: La primera línea del archivo contiene los códigos de todos los productos agrícolas presentes en el resto del archivo, mientras que la segunda línea es la cabecera del archivo.

    Implemente las siguientes funciones:

    1.1. crearMatriz(nomArchivo) que recibe el nombre del archivo con la información de las cosechas de un año; y devuelve un vector con todos los códigos de productos y una matriz con los totales (valores enteros) de cosechas para cada producto (filas) durante cada mes del año (columnas). Ejemplo:

    [ENE,FEB,MAR,ABR,MAY,JUN, JUL,AGO,SEP,OCT,NOV,DIC]
    Cod =[
    [100034],
    [100312],
    [100021],
    ...
    [201245],
    [432198]]
    M=[
    [32, 12, 45,  67, 84, 114,  21, 57, 99, 84, 74, 65],
    [43, 15, 67,  21, 77,  95, 110, 78, 93, 63, 56, 32],
    [65, 78, 32, 155, 32,  73,  87, 91, 22, 65, 82, 17],
    ...
    [39, 71, 63,  32, 57,  85,  83, 12, 11, 15, 34, 65],
    [55, 51, 54,  67, 64,  63,  56, 52, 71, 77, 87, 32]]

    1.2. mesMasRentable(M) que recibe la matriz de cosechas M . Esta función retorna el nombre del mes en que más se cosechó y el total de cosecha de ese mes.

    1.3. altoBajos(M, k) que recibe la matriz de cosechas M y un entero k. La función retorna el nombre de todos los meses que tienen una cosecha total con al menos k unidades por debajo de la cosecha del mejor mes del año.

    1.4. mejorTrimestre(M, Cod, codigo) que recibe la matriz de cosechas M, el vector de códigos Cod y el codigo de un producto. La función debe retornar el nombre del trimestre ("T1", "T2", "T3" o "T4") en el que más se cosechó el producto con codigo .

    1.5. mejoresNProductos(M, Cod, n) que recibe la matriz de cosechas M, el vector de códigos Cod y un número entero n . La función debe retornar los códigos de los n productos más cosechados durante el año.

    1.6. promedioProductos(M, Cod, codigos) que recibe la matriz de cosechas M, el vector de códigos Cod y una lista con códigos de productos. La función retorna el promedio de los totales de cosecha entre los códigos dados en la lista.

    7. porCategoria(M, Cod, categorias) que recibe la matriz de cosechas M , el vector de códigos Cod y un diccionario categorias con el siguiente formato:

    categorias = {'legumbres':[100034,201245,...],
                  'verduras': [100021,200013,...],
                   ... }
    

    La función deberá escribir un archivo por cada categoría con el siguiente formato: Archivo_legumbres.txt

    codigo,ENE,FEB,MAR,ABR,MAY,JUN,JUL,AGO,SEP,OCT,NOV,DIC
    100034,32,12,45,67,84,114,21,57,99,84,74,65
    201245,39,71,63,32,57,85,83,12,11,15,34,65
    ...
    

    El nombre del archivo debe ser el mismo de la categoría dentro del diccionario categorias y terminar con “.txt”.

    Rúbrica: numeral 1.1 (8 puntos), numeral 1.2 (5 puntos),numeral 1.3 (8 puntos), numeral 1.4 (9 puntos), numeral 1.5 (6 puntos), numeral 1.6 (9 puntos), numeral 1.7 (15 puntos).


    Referencia: Producción de brócoli crece 300% desde 2000
    https://www.eluniverso.com/2005/03/24/0001/9/E2FB1BA3C6DC41C899E8B87A7F2FBD36.html

  • Actividades 1ra Evaluación

    En esta sección se publica contenido por semana de clases. Cada sección contiene temas de lecturas previa, Ejercicios realizados en clases en la semana, videos tutoriales, tareas y material complementario.



    Semana 1 - Estructura Básica y Condicionales

    1.1 Lectura

    Tipos de datos numéricos

    Estructuras de Control en programación

    Condicionales «if-else» – Estructura de selección

    1.2 Tarea y Ejemplos

    Condicionales "if-else" - Tarea y Ejemplos

    1.3 Instalación de Python en PC

    Instalar - WinPython sin complicaciones

    Instalar - Python paso a paso

    Instalar - librerías en Python Numpy, Matplotlib, Scipy

    1.4 Otros

    Políticas del Curso FP



    Semana 2 - Lazos y Acumuladores

    2.1 Lectura

    Bucles o Ciclos "while/for" - Estructuras para Repetir o iterar

    Contadores y Acumuladores en programación

    Vectores - Arreglos de una dimensión en Python

    2.2 Tarea y Ejemplos

    1Eva2003TIII_T2 Verificar números triangulares

    Solución propuesta: s1Eva2003TIII_T2 Verificar números triangulares

    1Eva2002TII_T4 Cociente de Fibonacci

    Solución propuesta: s1Eva_IIT2002_T4 Cociente de Fibonacci

    1Eva2012TII_T1 Sucesión de Padovan

    Solución propuesta: s1Eva2012TII_T1 Sucesión de Padovan

    Juego de icosaedros. Desarrollado en clase, ingresando solo los valores de las caras del icosaedro, archivo adjunto. La propuesta de solución al examen incluye uso de números aleatorios que es parte de los temas a tratar la siguiente semana (lecturas).

    1Eva2003TII_T4 Juego con icosaedros

    Solución propuesta:  s1Eva2003TII_T4 Juego con icosaedros



    Semana 3 - Cociente y Residuo, Números Aleatorios, Bases numéricas

    3.1 Lectura

    Cociente y Residuo: Operaciones básicas matemáticas y lógicas en Python

    Números Aleatorios, al Azar o random con Python

    Número Binario y Decimal

    3.2 Tareas y Ejemplos

    Número Binario y Decimal - Tarea y Ejemplos

    Números Aleatorios "random"- Tarea y Ejemplos



    Semana 4 - Vectores/Arreglos de una dimensión

    4.1 Lecturas

    Vectores - Arreglos de una dimensión en Python

    4.2 Tarea y Ejemplos

    Vectores /Arreglos - Tarea y Ejemplos



    Semana 5 - Matrices/Arreglos de dos dimensiones -

    5. 1 Lecturas

    Matrices - Arreglos de dos dimensiones en Python

    5.2 Tareas y Ejemplos

    Matrices /Arreglos - Tarea y Ejemplos



    Semana 6 - Cadenas de caracteres - Vectores de letras

    6.1 Lecturas

    Caracteres/cadenas/strings - vector de letras

    6.2 Tarea y Ejercicios

    Caracteres/cadenas/strings - Tareas y Ejemplos



    Semana 7 - Listas /Tablas de texto y números

    7.1 Lecturas

    Listas como conjuntos en Python

    7.2 Tarea y Ejemplos

    Listas - Tareas y Ejemplos



  • 2Eva_IT2019_T3 Prueba de escritorio, conjuntos

    2da Evaluación I Término 2019-2020, Agosto 30, 2019

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

    A = {3, 6, 7, 13, 19}
    B = {13, 15, 19, 23, 29}
    C = A.union(B)- B.intersection(A)
    D = A.symmetric_difference(B)
    if C == D:
        print('Vaya a la oficina 2')
    else:
        print('Regrese a la oficina 5')
    

    Nota: Asuma que este tema NO tiene errores de compilación. Si usted cree que hay algún error de compilación, consúltelo inmediatamente con su profesor.

  • s2Eva_IT2019_T3 Prueba de escritorio, conjuntos

    Ejercicio: 2Eva_IT2019_T3 Prueba de escritorio, conjuntos

    Conjuntos en Python, data set, unión, intersección, diferencia simétrica.

  • 2Eva_IT2019_T2 Separar indicadores

    2da Evaluación I Término 2019-2020, Agosto 30, 2019

    Tema 2. (40 puntos) Dado el archivo indicadores.csv​ con el siguiente formato:

    Indicador, columna, min1|max1|puntaje1, min2|max2|puntaje2, ..., minN|maxN|puntajeN

    Ejemplo:

    Indicador,Columna,Puntajes
    Num_empresas,17,0|9|1,10|19|2,...
    Num_coworkings,5,0|15|10,16|30|15,...

    Y el archivo ​estadisticas.csv​ con el siguiente contenido de ejemplo:

    Buenos Aires, México, Budapest, ... 
    Ciudad,Indicador,valor 
    Santiago de Chile,Num_empresas,58
    Guayaquil,Inversion en $,17423...
    Guayaquil,Num_coworkings,5

    Nota: La primera línea del archivo ​estadisticas.csv​ tiene los nombres de todas las ciudades presentes en el archivo, mientras que la segunda línea es su cabecera. Una ciudad puede estar repetida en varias líneas del archivo pero con un indicador diferente.

    Escriba un programa en Python que cree el diccionario ​indicadores​, el arreglo ​ciudades​ y la matriz ​M​ utilizados en el ​TEMA 1​.

    Rúbrica: crear diccionario ( puntos), crear arreglo ( puntos), crear matriz ( puntos) Nota: puntos detallados no indicados en el impreso del examen original.

  • 2Eva_IT2019_T1 Indicador de innovación por ciudad

    2da Evaluación I Término 2019-2020, Agosto 30, 2019

    Tema 1. (50 puntos) Asuma que tiene la matriz M cuyas filas representan ciudades del mundo, las columnas representan indicadores de innovación y cada celda contiene el valor que tiene la ciudad para un indicador.

    Además, cuenta con el diccionario indicadores con el siguiente formato:

    indicadores = {'Num_empresas':{'columna':17,
                                   'puntaje':{(0,9):1,
                                              (10,19):2,
                                              ...}
                                   },
                   'Num_coworkings':{'columna':5,
                                     'puntaje':{(0,15):10,
                                                (16,30):15,...}
                                     },
                   ...
                   }
    

    Finalmente, cuenta con un arreglo ciudades con los nombres de las ciudades en el mismo orden que aparecen en las filas de la matriz M.

    Implemente las siguientes funciones:

    a. obtenerPuntajes(M, indicadores, indicador) que recibe la matriz M , el diccionario de indicadores , y el nombre de un indicador; y devuelve un vector con el puntaje obtenido por cada ciudad en ese indicador.
    Por ejemplo: Si una ciudad, tiene un valor de 15 para el indicador 'Num empresas', obtendrá 2 como puntaje.

    b. crearMatrizPuntajes(M, indicadores) que recibe la matriz M y el diccionario de indicadores; y retorna una matriz de puntajes( P) cuyas filas representan ciudades, las columnas representan indicadores y el valor de cada celda representa el puntaje obtenido por esa ciudad en ese indicador.

    c. topCiudades(P, minPuntaje, ciudades, K) que recibe una matriz de puntajes P, un puntaje mínimo, el arreglo con los nombres de las ciudades y un entero K; y retorna un arreglo con los nombres de las ciudades cuyo total de puntos en los primeros K indicadores (columnas) sea al menos minPuntaje.

    d. numEmpresas(M, P, indicadores, N) que recibe la matriz M ,una matriz de puntajes P, el diccionario indicadores y un entero N. Encuentre las N ciudades con mayor puntaje total y retorne el número promedio de empresas (indicador 'Num empresas') de esas ciudades.

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


    Referencias: https://www.distrito100.com/, https://www.eluniverso.com/noticias/2019/04/21/nota/7292456/guayaquil-da-primer-paso-busca-innovacion/

     

  • 1Eva_IT2019_T4 Prueba de escritorio, arreglos

    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:

    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:

    \text{porcentaje defectos} = \frac{\text{total piezas defectuosas}}{\text{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).