Autor: Edison Del Rosario

  • s2Eva_IIT2018_T2 Hielo y especies en Ártico-Procesar

    Ejercicio2Eva_IIT2018_T2 Hielo y especies en Ártico-Procesar

    Se añade las instrucciones al tema anterior,

    Se incluyen las funciones que se asume como existentes para prueba de programa. En caso de problemas o dudas con el conteo, elaborar una función contar.

    # CCPG1001-Fundamentos de programación FIEC-ESPOL
    # 2Eva_IIT2018_T2 Hielo y especies en Ártico-Procesar
    import numpy as np
    
    # ----- NUMERAL 2 ----- 
    # Funciones que suponen que existen:
    def cuadrantes(matriz):
        tamano = np.shape(matriz)
        n = tamano[0]
        m = tamano[1]
        mitadfila = n//2
        mitadcolumna = m//2
        Q1 = matriz[0:mitadfila,0:mitadcolumna]
        Q2 = matriz[0:mitadfila,mitadcolumna:]
        Q3 = matriz[mitadfila:,0:mitadcolumna]
        Q4 = matriz[mitadfila:,mitadcolumna:]
        Q = np.array([Q1,Q2,Q3,Q4])
        return(Q)
    
    def poblacionEspecie(mAnimales, especie):
        Q = cuadrantes(mAnimales)
        # pQ1 = np.count_nonzero(Q[0],especie)
        # np.count_nonzero no hay en funciones referencia
        # no en cheatsheet “Cheat Sheet”
        # se procede con algoritmo básico
        k = len(Q)
        poblacion = np.zeros(k,dtype=int)
        for i in range(0,k,1):
            unaQ = Q[i]
            tamano = np.shape(unaQ)
            n = tamano[0]
            m = tamano[1]
            for f in range(0,n,1):
                for c in range(0,m,1):
                    if (unaQ[f,c] == especie):
                        poblacion[i] = poblacion[i] +1
        return(poblacion)
    
    # otra forma es usar una funcion contar en arreglo
    def contarenarreglo(arreglo,cual):
        tamano = np.shape(arreglo)
        n = tamano[0]
        m = tamano[1]
        contar = 0
        for f in range(0,n,1):
            for c in range(0,m,1):
                if (arreglo[f,c] == cual):
                    contar = contar+1
        return(contar)
    
    


    Desarrollo del numeral 2:

    # CCPG1001-Fundamentos de programación FIEC-ESPOL
    # 2Eva_IIT2018_T2 Hielo y especies en Ártico-Procesar
    import numpy as np
    
    # funcion numeral 2
    def densidadHielo(mHielo):
        Q = cuadrantes(mHielo)
        k = len(Q)
        densidad = np.zeros(k,dtype=float)
        for i in range(0,k,1):
            unaQ = Q[i]
            tamano = np.shape(unaQ)
            n = tamano[0]
            m = tamano[1]
            densidad[i]=np.sum(unaQ)/(n*m)
        return(densidad)
    

    desarrollo del numeral 3:

    # CCPG1001-Fundamentos de programación FIEC-ESPOL
    # 2Eva_IIT2018_T2 Hielo y especies en Ártico-Procesar
    import numpy as np
    
    # ----- NUMERAL 3 -----
    def especieDominante(mAnimales):
        especies = np.unique(mAnimales)
        ke = len(especies)
        
        Q = cuadrantes(mAnimales)
        k = len(Q)
        dominante = np.zeros(k,dtype=int)
        for i in range(0,k,1):
            unaQ = Q[i]
            cuantos = np.zeros(ke,dtype=int)
            for j in range(0,ke,1):
                # solución semejante al NUMERAL 2
                # para poblacionEspecie
                animal = especies[j]
                cuantos[j] = contarenarreglo(unaQ,animal)
            mayoria = np.argmax(cuantos)
            dominante[i]= especies[mayoria]
        return(dominante)
    

    desarrollo del numeral 4

    # CCPG1001-Fundamentos de programación FIEC-ESPOL
    # 2Eva_IIT2018_T2 Hielo y especies en Ártico-Procesar
    import numpy as np
    
    # ----- NUMERAL 4 -----
    def migracionEspecie(mAnimales2009, mAnimales2019, especie):
        Q = cuadrantes(mAnimales2009)
        k = len(Q)
        cuantos = np.zeros(k,dtype=int)
        for i in range(0,k,1):
            unaQ = Q[i]
            cuantos[i] = contarenarreglo(unaQ,especie)
        mayoria09 = np.argmax(cuantos)
    
        Q = cuadrantes(mAnimales2019)
        k = len(Q)
        cuantos = np.zeros(k,dtype=int)
        for i in range(0,k,1):
            unaQ = Q[i]
            cuantos[i] = contarenarreglo(unaQ,especie)
        mayoria19 = np.argmax(cuantos)
        
        # considere numeración desde 0
        a = 'Q'+str(mayoria09+1)
        b = 'Q'+str(mayoria19+1)
        migraron =[a,b]
        return(migraron)
    


    Programa de prueba, incluye las partes del tema anterior

    # CCPG1001-Fundamentos de programación FIEC-ESPOL
    # 2Eva_IIT2018_T2 Hielo y especies en Ártico-Procesar
    import numpy as np
    
    # PROGRAMA DE PRUEBA
    # INGRESO
    narchivo = 'artico2009-2019.txt'
    especie = 4
    
    # PROCEDIMIENTO
    
    # ----- NUMERAL 1 ----- 
    matrices = crearMatriz(narchivo)
    mhielo09 = matrices[0]
    mhielo19 = matrices[1]
    manimales09 = matrices[2]
    manimales19 = matrices[3]
    
    # ----- NUMERAL 2 ----- 
    Q = cuadrantes(manimales09)
    poblacion = poblacionEspecie(manimales09, especie)
    densidad = densidadHielo(mhielo09)
    
    # ----- NUMERAL 3 -----
    dominante = especieDominante(manimales09)
    
    # ----- NUMERAL 4 -----
    migraron = migracionEspecie(manimales09, manimales19, especie)
    
    
    # SALIDA
    print(' ----- NUMERAL 1 ----- ')
    print('hielo 2009')
    print(mhielo09)
    print('hielo 2019')
    print(mhielo19)
    print('animales 2009')
    print(manimales09)
    print('animales 2019')
    print(manimales19)
    
    print(' ----- NUMERAL 2 ----- ')
    print('cuadrantes de manimales09')
    print(Q)
    print('población por cuadrantes de manimales09')
    print('para especie = 4')
    print(poblacion)
    print('densidad de hielo para mhielo09')
    print(densidad)
    
    print(' ----- NUMERAL 3 ----- ')
    print('dominantes en manimales09')
    print(dominante)
    print(' ----- NUMERAL 4 ----- ')
    print('migraron de la especie: ',especie)
    print(migraron)
    

    Los resultados obtenidos son:

    animales 2009
    [[ 1  2  4  4]
     [ 2  5  5  3]
     [ 1  3  9  1]
     [ 1  1  4  2]
     [ 4 22  4  7]
     [ 1  1  4  0]]
    
     ----- NUMERAL 2 ----- 
    cuadrantes de manimales09
    [[[ 1  2]
      [ 2  5]
      [ 1  3]]
    
     [[ 4  4]
      [ 5  3]
      [ 9  1]]
    
     [[ 1  1]
      [ 4 22]
      [ 1  1]]
    
     [[ 4  2]
      [ 4  7]
      [ 4  0]]]
    población por cuadrantes de manimales09
    para especie = 4
    [0 2 1 3]
    densidad de hielo para mhielo09
    [0.5        0.66666667 0.83333333 0.5       ]
     ----- NUMERAL 3 ----- 
    dominantes en manimales09
    [1 4 1 4]
     ----- NUMERAL 4 ----- 
    migraron de la especie:  4
    ['Q4', 'Q2']
    
  • s2Eva_IIT2018_T1 Hielo y especies en Ártico-Archivo

    Ejercicio: 2Eva_IIT2018_T1 Hielo y especies en Ártico-Archivo

    Usando el archivo proporcionado en el ejemplo: 'artico2009-2019.txt'

    se crea la función y programa de prueba con las instrucciones más básicas y simples:

    # CCPG1001-Fundamentos de programación FIEC-ESPOL
    # 2Eva_IIT2018_T1 Hielo y especies en Ártico-Archivo
    
    # ----- NUMERAL 1 ----- 
    def crearMatriz(narchivo):
        archivo = open(narchivo,'r')
        
        # dimensiones de matriz
        linea = archivo.readline()
        n = int(linea.strip('\n'))
        linea = archivo.readline()
        m = int(linea.strip('\n'))
        # se crean las matrices
        mhielo09 = np.zeros(shape=(n,m),dtype=int)
        mhielo19 = np.zeros(shape=(n,m),dtype=int)
        manimales09 = np.zeros(shape=(n,m),dtype=int)
        manimales19 = np.zeros(shape=(n,m),dtype=int)
        
        # linea encabezados, No procesada
        linea = archivo.readline()
        
        # linea datos
        linea = archivo.readline()
        while not(linea==''):
            linea = linea.strip('\n')
            partes = linea.split(',')
            anio    =  partes[0]
            fila    = int(partes[1])
            columna = int(partes[2])
            hielo   = int(partes[3])
            animal  = int(partes[4])
            if (anio =='2009'):
                mhielo09[fila,columna] = hielo
                manimales09[fila,columna] = animal
            if (anio =='2019'):
                mhielo19[fila,columna] = hielo
                manimales19[fila,columna] = animal
            linea = archivo.readline()
        archivo.close()
        matrices = [mhielo09,
                    mhielo19,
                    manimales09,
                    manimales19]
        return(matrices)
    
    # PROGRAMA DE PRUEBA
    # INGRESO
    narchivo = 'artico2009-2019.txt'
    
    # PROCEDIMIENTO
    # ----- NUMERAL 1 ----- 
    matrices = crearMatriz(narchivo)
    mhielo09 = matrices[0]
    mhielo19 = matrices[1]
    manimales09 = matrices[2]
    manimales19 = matrices[3]
    
    # SALIDA
    print(' ----- NUMERAL 1 ----- ')
    print('hielo 2009')
    print(mhielo09)
    print('hielo 2019')
    print(mhielo19)
    print('animales 2009')
    print(manimales09)
    print('animales 2019')
    print(manimales19)
    

    para obtener:

     ----- NUMERAL 1 ----- 
    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]]
    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]]
    animales 2009
    [[ 1  2  4  4]
     [ 2  5  5  3]
     [ 1  3  9  1]
     [ 1  1  4  2]
     [ 4 22  4  7]
     [ 1  1  4  0]]
    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]]
    
  • 2Eva_IIT2018_T2 Hielo y especies en Ártico-Procesar

    2da Evaluación II Término 2018-2019. 2-Febrero-2019 /CCPG001

    (Editado para tarea, se manteniene el objetivo de aprendizaje)
    Sección 2
    . Descripción del Problema y funciones con matrices (pregunta 2,3,4)

    Para el resto del examen considere lo siguiente:

    Cuadrantes de la matriz

    Las matrices pueden ser divididas en cuadrantes, cuatro subregiones de igual tamaño,  denominados:
    Q1, Q2, Q3 y Q4
    como se muestra en la gráfica:

    Asuma que existen las siguientes funciones:

    a.  cuadrantes(matriz) que recibe una matriz y devuelve un vector con los cuadrantes de la matriz [Q1, Q2, Q3, Q4], que son a su vez matrices (arreglos).

    b. poblacionEspecie(mAnimales, especie) que recibe una matriz de animales, el código de una especie y determina la cantidad total de animales de esa especie en cada uno de los cuadrantes. El resultado es un vector con el siguiente formato [pQ1, pQ2, pQ3, pQ4].


    Realice las funciones:

    2. densidadHielo(mHielo) que recibe una matriz de hielo y determina la densidad de hielo para cada cuadrante. El resultado es un vector con el  formato [dQ1, dQ2, dQ3, dQ4].
    La densidad de un cuadrante es la cantidad total de sus celdas con valor uno (1) dividido para el número total de celdas del cuadrante.

    3. especieDominante(mAnimales) que recibe una matriz de animales y encuentra la especie dominante por cuadrante.
    El resultado es un vector con los códigos de la especie que más se repite en cada cuadrante: [eQ1, eQ2, eQ3, eQ4]

    4. migracionEspecie(mAnimales2009, mAnimales2019, especie) que recibe la matriz de animales del 2009, la matriz de animales del 2019 y el código de una especie. La función debe retornar un vector [a,b] con dos valores:

    a.  El primer valor corresponde al cuadrante donde hubo mayor población de animales de la especie en el 2009.
    b.  El segundo valor corresponde al cuadrante donde hay mayor población de animales de la especie en el 2019.
    Los valores son  los códigos de los cuadrantes: 'Q1', 'Q2','Q3', 'Q4'

    Rúbrica: numeral 2 (10 puntos), numeral 3 (20 puntos), numeral 4 (15 puntos),

  • 2Eva_IIT2018_T5 Prueba de escritorio, arreglos

    2da Evaluación II Término 2018-2019. 2-Febrero-2019 /CCPG001

    Sección 5. BONO (+10 PUNTOS)
    ¿Qué resultado muestra el siguiente código? Justifique su respuesta

    import numpy as np
    
    M = np.ones((20,17), int)
    M1 = M[5:14,7:15]
    M2 = M[1:9,8:]
    
    f,c = M2.shape
    if M1.size == f*c:
        M[5:14,7:15] = 0
    else:
        M[1:9,8:] = -1
    
    print(M.sum())
    
  • 2Eva_IIT2018_T4 Hielo y especies en Ártico-programa

    2da Evaluación II Término 2018-2019. 2-Febrero-2019 /CCPG001

    Sección 4. Programa que usa las funciones de la sección 1, 2, 3 (preguntas 6-9)

    implemente un programa principal que:

    6. Forme las matrices a partir del archivo 'artico2009-2019.txt'

    7. Muestre por pantalla el código de las especies que en el 2019 son comunes (se repiten) para los cuadrantes Q1, Q2 y Q4 pero que no existan en Q3.

    Los siguientes dos numerales se resuelven juntos.

    8. Determine si ha habido migración de la especie con código 3. Existe migración si el cuadrante con mayor población en el 2009 y 2019 son diferentes .

    9. Una posible explicación para la migración de una especie puede ser el deshielo. Entonces, si existió migración (de la especie con código 3) del cuadrante con mayor población en el 2009 (Qx) al cuadrante con mayor población en el 2019 (Qy), muestre la diferencia (positiva o negativa) de densidad de hielo del 2009 al 2019 para el cuadrante Qx.

    Calcule la diferencia con la siguiente fórmula:

    Diferencia = densidad_Qx_2019 - densidad_Qx_2009

    Por ejemplo:

    Si migracionEspecie retorna ('Q1', 'Q4'), la diferencia será la densidad de hielo en el 2009 del cuadrante ‘Q1’ menos la densidad de hielo en el 2019 del mismo cuadrante ‘Q1’.

    Rúbrica: numeral 6 (1 punto), numeral 7 (9 puntos), numeral 8 (1 punto),numeral 9 (9 puntos)

  • 2Eva_IIT2018_T1 Hielo y especies en Ártico-Archivo

    2da Evaluación II Término 2018-2019. 2-Febrero-2019 /CCPG001

    (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.

  • 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)


    Referencias:

  • s1Eva_IIT2018_T3 Compras 'Black Friday'

    Ejercicio: 1Eva_IIT2018_T3 Compras 'Black Friday'

    Los numerales se desarrollan como funciones, dividiendo el ejercicio por partes.

    El bloque de procedimiento debe hacer el llamado a las funciones para encontrar las respuestas.


    Algoritmo en Python

    # CCPG1001 Fundamentos de Programación FIEC-ESPOL
    # 1Eva_IIT2018_T3 Compras ‘Black Friday’
    # Tarea: descuentosPorSección
    import random as rnd
    import numpy as np
    
    def calcularPrecio(unacompra,Codigo,Precio,Descuento):
        unprecio = 0
        if (unacompra in Codigo):
            donde = Codigo.index(unacompra)
            valor = Precio[donde]
            unprecio = valor - Descuento[donde]*valor/100
        return(unprecio)
    
    def calcularTotal(compras,Codigo,Precio,Descuento):
        m = len(compras)
        totalpagar = 0
        i = 0
        while not(i>=m):
            unacompra = compras[i]
            unprecio = calcularPrecio(unacompra, Codigo,
                                      Precio, Descuento)
            totalpagar = totalpagar + unprecio
            i = i + 1
        return(totalpagar)
    
    def hallarSecciones(compras,Codigo,Seccion):
        m = len(compras)
        visitar = []
        i = 0
        while not(i>=m):
            unacompra = compras[i]
            donde = Codigo.index(unacompra)
            unaseccion = Seccion[donde]
            if not(unaseccion in visitar):
                visitar.append(unaseccion)
            i = i + 1
        return(visitar)
    
    def descuentosPorSección(Descuento,Seccion):
        remate = []
        # Tarea: Desarrollar
        return(remate)
        
    # INGRESO
    unacompra = input('codigo de una compra: ')
    
    # Tarea: ingresar varias compras
    compras = ['SKU-5675', 'PSS-4542']
    Codigo  = ['CTR-2424', 'SKU-5675', 'PSS-4542']
    Precio  = [ 56.65, 32.00, 22.22]
    Descuento = [0, 50, 10]
    Seccion = ['Ropa Niños', 'Juguetes', 'Hombre']
    
    # PROCEDIMIENTO
    unprecio   = calcularPrecio(unacompra, Codigo,
                                Precio,Descuento)
    totalpagar = calcularTotal(compras, Codigo,
                               Precio,Descuento)
    visitar = hallarSecciones(compras,Codigo, Seccion)
    remate  = descuentosPorSección(Descuento, Seccion)
    
    # SALIDA
    print('El precio de : ',unacompra)
    print(unprecio)
    print('total a pagar de lista de compras: ', totalpagar)
    print('tiendas a visitar: ',visitar)
    print('remate de productos por seccion: ',remate)
    

    resultado del algoritmo

    codigo de una compra: CTR-2424
    El precio de :  CTR-2424
    56.65
    total a pagar de lista de compras:  35.998
    tiendas a visitar:  ['Juguetes', 'Hombre']
    remate de productos por seccion:  []
    >>> 
    
  • 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 secreta de la lista de palabras.

    2. Como una pista, aleatoriamente se escoge una letra de la palabra secreta, que sea consonante y se la muestra entre los espacios por adivinar de secreta.

    Por ejemplo, si  la palabra secreta es 'ESPOL' y la letra pista 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 secreta 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 secreta.

    5. Al final muestre si el usuario ganó o perdió y la cantidad de intentos usados,

    Escriba un programa en Python para implementar el juego.


    Sugerencia: Realice una función cambialetra(secreta,letra,estado) para revisar si letra se encuentra en secreta y cambiar el estado del juego.

    Ejemplo: 
    secreta = 'ESPOL'
    letra = 'S'
    estado = '-----'
    cambialetra(secreta, letra, estado)
    >>> '-S---'

    Sugerencia: Realice una función escondeletras(secreta) que cambia las letras de la palabra secreta por un símbolo predeterminado:

    escondeletras(secreta)
    >>> '-S---'

    Referencia: 2Eva_IT2005_T3 Adivina palabra (ahorcado)

     

  • s1Eva_IIT2018_T2 Juego conocimiento (Ahorcado)

    Ejercicio: 1Eva_IIT2018_T2 Juego conocimiento (Ahorcado)

    Propuesta de solución al ejercicio.

    Estado del juego:  F***
     adivine una letra: C
     Adivinaste...C
    
    Estado del juego:  FC**
    turno: 1
    fallas:  0
     adivine una letra: M
     Adivinaste...M
    
    Estado del juego:  FC*M
    turno: 2
    fallas:  0
     adivine una letra: A
     NO es una letra de palabra...
    
    Estado del juego:  FC*M
    turno: 3
    fallas:  1
     adivine una letra: N
     Adivinaste...N
    
    Estado del juego:  FCNM
    turno: 4
    fallas:  1
    Felicitaciones, adivinó: FCNM
    >>> 
    

    Algoritmo en Python

    Siguiendo las sugerencias, para dividir y simplificar el problema, primero se crean las funciones: escondeletras(secreta) y cambialetra(secreta,letra,estado).

    Se inicia con la selección aleatoria de la palabra secreta y el sorteo de la letra pista, verificando que sea consonante.

    Se actualiza la palabra secreta con la letra pista, y se inicia el juego.

    # CCPG1001 Fundamentos de Programación FIEC-ESPOL
    # 1Eva_IIT2018_T2 Juego conocimiento (Ahorcado)
    # propuesta de solución: edelros@espol.edu.ec
    # tarea: indiferente usar mayúsculas/minúsculas
    #        contar solo letras adivinadas, no repetidas
    
    import numpy as np
    import random as rnd
    
    def escondeletras(secreta):
        estado = ''
        n = len(secreta)
        i = 0
        while not(i>=n):
            estado = estado + '*'
            i = i + 1 
        return(estado)
    
    def cambialetra(secreta,letra,estado):
        nuevoestado = ''
        n = len(secreta)
        i = 0
        while not(i>=n):
            if (secreta[i]==letra):
                nuevoestado = nuevoestado + letra
            else:
                nuevoestado = nuevoestado + estado[i]
            i = i + 1
        return(nuevoestado)
    
    # PROGRAMA JUEGO
    # selecciona secreta
    palabras = ['ESPOL','FCNM','FIEC','FIMCP','FICT']
    n = len(palabras)
    sorteo  = int(rnd.random()*n)+0
    secreta = palabras[sorteo]
    
    # estado inicial del juego
    estado = escondeletras(secreta)
    
    # una letra como pista
    consonante = 'BCDFGHJKLMNPQRSTVWXYZ'
    m = len(secreta)
    sorteo = int(rnd.random()*m)+0
    pista = secreta[sorteo]
    while not(pista in consonante):
        sorteo = int(rnd.random()*m)+0
        pista  = secreta[sorteo]
        
    # actualiza estado del juego
    estado = cambialetra(secreta,pista,estado)
    
    # Control del Juego
    turnomax = 2*m
    gana  = 1
    falla = 0
    print('Estado del juego: ', estado)
    
    turno = 1
    while not(turno>turnomax or gana==m):
        letra = input(' adivine una letra: ')
        if (letra in secreta):
            gana    =  gana +1
            estado  = cambialetra(secreta,letra, estado)
            mensaje = ' Adivinaste...' + letra
        else:
            falla   = falla + 1
            mensaje = ' NO es una letra de palabra...'
        
        print(mensaje)
        print()
        print('Estado del juego: ', estado)
        print('turno:', turno)
        print('fallas: ', falla)
        turno = turno + 1
    
    if (turno<=turnomax and gana==m):
        mensaje = 'Felicitaciones, adivinó: ' + secreta
    else:
        mensaje = 'lo lamento, perdió..., la palabra era: '
        mensaje = mensaje + secreta
    
    # SALIDA
    print(mensaje)
    

    Recuerde que se ha dejado como tarea, realizar las instrucciones para cumplir que:
    - sea indiferente usar mayúsculas/minúsculas
    - contar solo letras adivinadas, no repetidas

    Referencia: 2Eva_IT2005_T3 Adivina palabra (ahorcado)

    Solución propuesta: s2Eva_IT2005_T3 Adivina palabra (ahorcado)