s3Eva_IIT2018_T1 texto aleatorio

Ejercicio: 3Eva_IIT2018_T1 texto aleatorio

Propuesta de solución en Python:
<Ejemplo:

El texto generado es: 
Hola Hola.
Hola amigo-amiga Hola que-
>>> 
# CCPG1001-Fundamentos de Programación - FIEC-ESPOL
# 3Eva_IIT2018_T1 texto aleatorio

import random as rnd

# INGRESO
n = 10 # enunciado con 73
T = ['Hola','.','que','tal','-',',','amigo','amiga']

# PROCEDIMIENTO
k = len(T)
texto   = ''
simbolo = ',.-'
antes   = 0
cuenta  = 0
while not(cuenta>=n):
    aleatorio = int(rnd.random()*k)+0
    untermino =  T[aleatorio]
    espalabra = not(untermino in simbolo)
    if cuenta == 0 and espalabra==1:
        texto  = texto + untermino
        cuenta = cuenta + 1
        antes  = espalabra
    if cuenta >0:
        if espalabra == 1:
            if antes == 1:
                texto = texto + ' '+ untermino
            if antes == 0:
                texto = texto + untermino
            antes  = 1
            cuenta = cuenta+1
        if espalabra==0 and antes==1:
            if untermino==',':
                texto = texto + ', '
            if untermino=='.':
                texto = texto + '.\n'
            if untermino=='-':
                texto = texto +'-'
            antes = 0
            cuenta = cuenta+1
        # if espalabra==0 and antes ==0:
        #     print('no se pueden juntar simbolos')

# SALIDA
print('El texto generado es: ')
print(texto)

# Archivo
archivo = open('literatura.txt','w')
archivo.write(texto)
archivo.close()

2Eva_IIT2018_T3 Hielo y especies en Ártico-Diccionario

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

Sección 3. Función para crear diccionario

Para el siguiente numeral, asuma que tiene un diccionario con los nombres de todas las especies del ártico en el siguiente formato:

dicEspecies = {codigo_especie:nombre_especie}

5. crearDiccionario(mHielo, mAnimales, dicEspecies) que recibe una matriz de hielo, una matriz de animales y el diccionario de las especies del Ártico.
La función crea un diccionario con los datos anteriore similar al mostrado:

dic = {'densidad hielo':{'Q1':0.75,
                         'Q2':0.11,
                         'Q3':0.55,
                         'Q4':0.47},
       'Especies':{ 1:51,
                    2:6,
                    ...
                    67:93}
       }

Para ‘Especies’ usar {especie:poblaciónTotal}

Rúbrica: Numeral 5 (20 puntos)

s2Eva_IIT2018_T4 Hielo y especies en Ártico-programa

Ejercicio: 2Eva_IIT2018_T4 Hielo y especies en Ártico-programa

Finalmente, se crea el programa que usa las funciones anteriores:

# CCPG1001-Fundamentos de programación FIEC-ESPOL
# 2Eva_IIT2018_T4 Hielo y especies en Ártico-programa

# ----- NUMERAL 1 y 6----- 
matrices = crearMatriz(narchivo)
mhielo09 = matrices[0]
mhielo19 = matrices[1]
manimales09 = matrices[2]
manimales19 = matrices[3]

# ----- NUMERAL 7-----
especies19 = np.unique(manimales19)
k = len(especies19)
comunes = []
for i in range(0,k,1):
    animal = especies19[i]
    Q = cuadrantes(manimales09)
    animal124 = np.concatenate([Q[0],Q[1],Q[3]]) 
    if (animal in animal124) and not(animal in Q[2]):
        comunes.append(animal)
        
# ----- NUMERAL 8-----
migra3 = migracionEspecie(manimales09, manimales19,3)
migro3 = 0
if (migra3[0]!=migra3[1]):
    migro3 =1
# ----- NUMERAL 9-----
# TAREA

# SALIDA
print(' ----- NUMERAL 1 y 6 ----- ')
print('hielo 2009')
print(mhielo09)
print('hielo 2019')
print(mhielo19)
print('animales 2009')
print(manimales09)
print('animales 2019')
print(manimales19)

print(' ----- NUMERAL 7 ----- ')
print('animales comunes: ')
print(comunes)

print(' ----- NUMERAL 8 ----- ')
print('migracion de 3:')
print(migra3)
print('migracion: ',migro3)

print(' ----- NUMERAL 9 ----- ')
print('Tarea...')

s2Eva_IIT2018_T3 Hielo y especies en Ártico-Diccionario

Ejercicio2Eva_IIT2018_T3 Hielo y especies en Ártico-Diccionario

}continuación de los temas anteriores:

# CCPG1001-Fundamentos de programación FIEC-ESPOL
# 2Eva_IIT2018_T3 Hielo y especies en Ártico-Diccionario

# ----- NUMERAL 5 -----
def crearDiccionario(mHielo, mAnimales, dicEspecies):
    densidad = densidadHielo(mHielo)
    k = len(densidad)
    tablad = {}
    for i in range(0,k,1):
        indice = 'Q'+str(i+1)
        tablad[indice] = densidad[i]

    especies = list(dicEspecies.keys())
    ke = len(especies)
    tablae = {}
    for j in range(0,ke,1):
        animal = especies[j]
        conteo = poblacionEspecie(mAnimales, animal)
        tablae[animal] = np.sum(conteo)
    
    tabla={}
    tabla['densidad hielo'] = tablad
    tabla['Especies'] = tablae
    return(tabla)

para probar con el computador, se usa el diccionario y los resultados anteriores:

# CCPG1001-Fundamentos de programación FIEC-ESPOL
# 2Eva_IIT2018_T3 Hielo y especies en Ártico-Diccionario

# ----- NUMERAL 5 -----
dicEspecies = {0:'No hay animal',
               1:'Lobo ártico',
               2:'Oso Polar',
               3:'Reno',
               4:'Foca',
               5:'...',
               7:'a7',
               9:'a9',
               22:'a22'}
datosdic = crearDiccionario(mhielo09,
                            manimales09,
                            dicEspecies)

#------------------------------------
print(' ----- NUMERAL 5 ----- ')
print('diccionario para año 2009')
print(datosdic)

con lo que los resultados son:

 ----- NUMERAL 5 ----- 
diccionario para año 2009
{'densidad hielo': {'Q1': 0.5,
                    'Q2': 0.6666666666666666,
                    'Q3': 0.8333333333333334,
                    'Q4': 0.5},
 'Especies': {0: 1,
              1: 7,
              2: 3,
              3: 2,
              4: 6,
              5: 2,
              7: 1,
              9: 1,
              22: 1}
 }

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.