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’

propuesta de solución, contiene tarea.

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

1Eva_IIT2018_T1 Prueba de escritorio, listas

1ra Evaluación II Término 2018-2019, Noviembre 23, 2018. CCPG001

Tema 1. (20 puntos)

a. (10 puntos) ¿Qué imprime el siguiente código? Justifique su respuesta

lista = [89, 45, 23, 17, 55, 95, 13, 41, 28, 11]

lista.sort()
promedio = sum(lista)//len(lista)

print(promedio)

menores = []
i = 0
while lista[i] < promedio:
    menores.append(lista[i])
    i += 1

print(menores)

b. (10 puntos) ¿Qué imprime el siguiente código? Justifique su respuesta

pal = 'Se van en sus naves'

b     = pal[::-1].replace(' ', '').lower()
pal_b = pal.lower().replace(' ', '')

if pal_b == b:
    print('Es palíndromo')
else:
    print('No es palíndromo')

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

Funciones de Referencia usadas en evaluación

«Cheat Sheet». algunas funciones y propiedades de referencia en Python usadas en evaluación. (desde 2016)

Numpy para arreglos

import numpy as np

np.zeros((numfilas,numColumnas),dtype='' ) # arreglo de ceros
np.ones((numfilas,numColumnas),dtype='' )  # arreglo de unos
np.array((numfilas,numColumnas),dtype='' ) # inicializa arreglo
np.empty((numfilas,numColumnas),dtype='' ) # arreglo vacio
np.unique(arreglo)  # elementos sin repetir

np.max(arreglo)     # valor máximo
np.argmax(arreglo)  # posición del máximo
np.sum(arreglo)     # suma de elementos
np.sum(arreglo, axis=1) # suma de una fila o columna (0/1)
np.mean(arreglo)    # promedio del arreglo

np.shape(arreglo)   # dimensiones de un arreglo
np.ndim(arreglo)    # número de dimensiones
np.size(arreglo)    # cantidad de casillas

arreglos.fill(valor)  # rellena un arreglo con una constante
arreglos.reshape()  # Redistribuye un arreglo

Cadenas de caracteres

cadenas.islower()
cadenas.isupper()
cadenas.lower()    # convierte a minúsculas
cadenas.upper()    # convierte a mayúsculas
cadenas.split('c') # separa el texto usando 'c' 
cadenas.find('c')  # encuentra la posicion de 'c'
cadenas.count('c') # cuenta las veces de 'c'

Listas

listas.append()  # añade un elemento
listas.count()   # cuenta elementos
listas.index()   # indice de un elemento
listas.pop()     # extrae el último elemento
elemento in listas   # verifica si elemento esta en listas
listas.extend(...)

Conjuntos

|    # unión
^    # diferencia simétrica
-    # diferencia
&    # intersección

3Eva_IT2018_T2 Producción minera del país

3ra Evaluación I Término 2018-2019. 14-Septiembre-2018 /CCPG001

(Editado para tarea, se mantiene el objetivo de aprendizaje)

Tema 2. (50 puntos) En el último discurso presidencial, se mencionaron algunos datos sobre las ganancias de algunos minerales del país que llamaron la atención de los ciudadanos.

http://www.pichinchauniversal.com.ec/sector-minero-sera-un-gran-aportador-economico/
http://www.pichinchauniversal.com.ec/sector-minero-sera-un-gran-aportador-economico/

Suponga que tiene todo el texto del discurso con el formato en minúsculas,  las palabras separadas por un espacio, sin signos de puntuacion ni otros símbolos. Los minerales están identificados por el prefijo «mral_» seguido del nombre del mineral. Por ejemplo: ‘mral_oro’, ‘mral_plata’, ‘mral_cobalto’

discurso = '... y el dia de ayer descubrimos en la mina mirador que la cantidad de mral_oro ...'

a) Implemente la función extraerMinerales(discurso) que al recibir el texto del discurso encuentra los nombres de todos los minerales mencionados. El resultado es una lista con los nombres de los minerales que empiezan con mayúscula y no se repiten en la lista.

Por otro lado, suponque que dispone de las tablas de producción para cada mineral de las canteras del país, costos totales de extracción, costos totales de transporte, los nombres de los minerales y minas asociados a las filas y columnas de las tablas, y los precios cada mineral, semejantes a los mostrados al final del ejercicio.
Con ésta información implemente las siguiente funciones:

b) La función calcularGanancias(P,C,T,precios)  que calcula las ganancias o pérdidas de cada mineral por mina. La función recibe la lista de precios de venta de los minerales las tres matrices: producción (P) , costos totales de extracción (C) y costos totales de transporte (T).

Adicionamente, considere las siguientes fórmulas:

ganancia = ventas - costos
ventas = producción*precio
costos = costos de transporte + costo de extracción

c) La función gananciaTotal(M, Minerales) determina las ganancias totales de cada mineral de mayor a menor, junto a los correspondientes nombres de mineral.

La función recibe la matriz del literal anterior y la lista de las etiquetas de los minerales (fila de la matriz).
El resultado es una tupla de dos elementos ordenados por ganancia:
– el vector de Numpy de las ganancias totales por mineral
– una lista con los nombres de los minerales.

d) La función top8(discurso, ganatotal) presenta los nombres de los ocho (8) minerales que generaron más ganancias totales  y que fueron mencionados en el discurso. La variable ganatotal corresponde al resultado de la función del literal anterior.

Rúbrica: literal a (1o puntos), literal b (15 puntos), literal c (15 puntos), literal d (10 puntos)

Datos de prueba:

minerales = ['Oro', 'Plata', 'Cobre']
precios   = [38.48,    3.43,    0.01]

minas = ['MIRADOR', 'FRUTA_DEL_NORTE', 'LOMA_LARGA', 'otra']

# produccion
P = np.array([[ 13524000, 121072000,  1204000,  9632000],
              [ 28000000,    952000,  9632000, 96404000],
              [126980000,    896000, 92988000,  9604000]])

# costos totales de extracción
C = np.array([[12.32, 10.23, 23.23, 19.23],
              [ 3.13,  1.78,  2.45,  1,69],
              [ 8.32,  5.25,  6.32,  6.89]])

# costos totales de transporte
T = np.array([[ 43736616, 341786256,  5442080,  28241024],
              [ 76244000,   1827840, 13966400, 435746080],
              [156439360,   1121792,300723192,  10785292]])

Referencia: Archivo original 3raEvaI_Term2018.pdf

s3Eva_IT2018_T2 Producción minera del país

Ejercicio: 3Eva_IT2018_T2 Producción minera del país

Solución propuesta en Python, el primer bloque corresponde solo a las funciones requeridas en el examen. El segundo bloque corresponde a un programa de prueba.

# CCPG1001-Fundamentos de Programación - FIEC-ESPOL
# 3Eva_IT2018_T2 Producción minera del país
import numpy as np

# Literal a
def extraerMinerales(discurso): 
    palabras = discurso.split(' ')
    cuales   = []

    for unapalabra in palabras:
        # Tarea: verificar únicos
        if 'mral_' in unapalabra:
            mencionados = unapalabra[5:]
            mencionados = mencionados.title()
            cuales.append(mencionados)

    return(cuales)

# literal b
def calcularGanancias(P,C,T,precios):
    produccion = np.array(P)
    costosExtraccion = np.array(C, dtype=float)
    costosTransporte = np.array(T)
    
    # precio en forma de columna
    precios = np.transpose([precios])

    ventas = produccion*precios
    costo = costosTransporte + costosExtraccion
    ganancia = ventas - costo
    return(ganancia)

# literal c
def gananciaTotal(ganancia, minerales):
    ganametal = np.sum(ganancia,axis =1)
    
    ascendente  = np.argsort(ganametal)
    descendente = np.argsort(-ganametal)

    totalmetal  = ganametal[descendente]
    
    # convierte arreglo para ascendente
    minerales = np.array(minerales)
    cualmetal = minerales[descendente]

    ganatotal = (totalmetal,list(cualmetal))

    return(ganatotal)

# literal d
def top8(discurso,reporte):
    mencionados = extraerMinerales(discurso)
    totalmetal  = reporte[0]
    cualmetal   = reporte[1]
    
    interseccion = []
    m = len(cualmetal)
    for i in range(0,m,1):
        if (cualmetal[i] in mencionados):
            interseccion.append(cualmetal[i])
            
    mejoresmencionados = interseccion[:8]
    return (mejoresmencionados)

Programa de Prueba

Observación: las matrices C y T no tienen el mismo orden de magnitud a pesar de ser costos totales. Podría ser que el costo de extracción C sea por gramos, sin embargo las matrices se usan tal como fueron presentadas en el examen

# CCPG1001-Fundamentos de Programación - FIEC-ESPOL

# PROGRAMA DE PRUEBA -----
discurso  = 'y el dia de ayer descubrimos en la mina mirador que la cantidad de mral_oro'

minerales = ['Oro', 'Plata', 'Cobre']
precios   = [38.48,    3.43,    0.01]

minas = ['MIRADOR', 'FRUTA_DEL_NORTE', 'LOMA_LARGA', 'otra']


P = [[ 13524000, 121072000,  1204000,  9632000],
     [ 28000000,    952000,  9632000, 96404000],
     [126980000,    896000, 92988000,  9604000]]

C = [[ 12.32, 10.23, 23.23, 19.23],
     [  3.13,  1.78,  2.45,  1.69],
     [  8.32,  5.25,  6.32,  6.89]]

T = [[ 43736616, 341786256,  5442080,  28241024],
     [ 76244000,   1827840, 13966400, 435746080],
     [156439360,   1121792,300723192,  10785292]]
            
# PROCEDIMIENTO
mencionados = extraerMinerales(discurso)

ganancias  = calcularGanancias(P,C,T,precios)

ganatotal  = gananciaTotal(ganancias, minerales)
totalmetal = ganatotal[0]
cualmetal  = ganatotal[1]

mejoresmencionados = top8(discurso,ganatotal)


# SALIDA
print('a) los minerales mencionados son: ')
print(mencionados)

print('b) las ganancias totales son:')
print(ganancias)

print('c) ganancias totales por metal')
print(totalmetal)
print(cualmetal)

print('d) los 8 mejores mencionados: ')
print(mejoresmencionados)

los resultados en pantalla son :

a) los minerales mencionados son: 
['Oro']
b) las ganancias totales son:
[[  4.76666892e+08   4.31706429e+09   4.08878168e+07   3.42398317e+08]
 [  1.97959969e+07   1.43751822e+06   1.90713576e+07  -1.05080362e+08]
 [ -1.55169568e+08  -1.11283725e+06  -2.99793318e+08  -1.06892589e+07]]
c) ganancias totales por metal
[  5.17701732e+09  -6.47754890e+07  -4.66764983e+08]
['Oro', 'Plata', 'Cobre']
d) los 8 mejores mencionados: 
['Oro']
>>>