Se anotan los datos de recogida de 5 tuberías de agua durante los siete días de la semana de una de las máquinas de la fábrica. Utilizando Numpy se creará una matriz de dos dimensiones del tipo de datos float de 5 X 7 que contenga ceros en todas sus posiciones.
Se debe:
Rellenar la matriz con números aleatorios de tipo flotante con valores desde [150.52 a 321.19]. Se redondean todos los elementos de la matriz para que tengan solo dos decimales.
Totalizar los litros recogidos de cada una de las cinco tuberías. Y se indica la diferencia entre la tubería que tenga mayor recogida con las otras 4.
Totalizar por día el total de litros recogidos de todas las tuberías.
Buscar el máximo valor de recogida.
Totalizar toda la matriz para saber cuántos litros de agua recibe la máquina.
Análisis:
Inicializar la matriz (5 filas y 7 Columnas).
Introducir los datos en la matriz con la función random (150.52-321.19).
Localizar el valor máximo de fila. Recorrer cada tubería (fila) para realizar la suma de cada tubería y poder saber la diferencia.
Recorrer para cada día (columna) cada una de las tuberías, realizar la suma.
Localizar el máximo de cada día.
Calcular cuántos litros de agua recibe la máquina
Esquema
Diagrama
Recordar
import numpy . Extensión de python, soportar matrices.
import random. Genera números al azar.
Código con numpy
#Importar los módulos
from numpy import *
import random
print("Programa de tuberías")
filas=5
columnas=7
dia=["Lunes", "Martes", "Miércoles","Jueves", "Viernes","Sábado", "Domingo"]
#Inicializar la matriz a ceros
datos_tuberias=zeros([filas,columnas])
#Intrudcir los valores random en la matriz
for i in range(datos_tuberias.shape[0]):
for j in range(datos_tuberias.shape[1]):
datos_tuberias[i][j]=round(random.uniform(150.52,321.19),2)
#Calcular el total de litos por tubería
print("Total de litros por tubería y diferencia con la de mayor caudal:")
mayor=round(datos_tuberias.sum(axis=1).max(),2)
tuberias=""
for i in range(datos_tuberias.shape[0]):
litros_totales_tuberia=round(datos_tuberias.sum(axis=1)[i],2)
diferencia=round(mayor-litros_totales_tuberia,2)
tuberias+="Tubería: " + str(i+1) + " : "+ str(litros_totales_tuberia)+ ". Dif. "+ str(diferencia)+"\n"
for i in range(datos_tuberias.shape[1]):
litros_totales_dia=datos_tuberias.sum(axis=0)[i]
print("Litros día {}: {}".format(dia[i],round(litros_totales_dia,2)))
#Cálculo de datos
tuberia_maximo=round(datos_tuberias.sum(axis=0).max(),2)
total_maquina=round(datos_tuberias.sum(),2)
#Visualizar datos
print(tuberias)
print("El valor máximo de recogida es: {}".format(tuberia_maximo))
print("Total de litros que recibe la máquina: {}". format(total_maquina))
Código con lista
import random
#Crea la matriz, le da valores a las filas y columnas
matriz=[]
filas=5
columnas=7
total=0
#Crea la matriz
for i in range(filas):
matriz.append([0]*columnas)
for j in range(columnas):
matriz[i][j]=round(random.uniform(150.52,321.19),2)
print("datos de las tuberías", matriz)
tuberia_total=[]
suma=0
#Recorre filas para obtener el total de tuberías y localiza el valor más alto
for i in range (len(matriz)):
total_tuberia=0
#Recorre columnas
for j in range (len(matriz[0])):
total+=matriz[i][j]
total_tuberia+=matriz[i][j]
tuberia_total.append(round(total_tuberia,3))
if total_tuberia>suma:
suma=round(total_tuberia,2)
print("litros de totales (de las 7 tuberías) son: ", round(total,3))
print("los litros de cada una de las tuberias es",tuberia_total)
print("El valor más alto es:", suma)
diferencia="Diferencia"+"\n"
#Obtiene la diferencia de la tubería que tiene más
for i, j in enumerate (tuberia_total):
resta=round(suma-j,2)
diferencia+="Tuberia :"+str(i+1)+ " es: "+ str(resta)+ "\n"
print(diferencia)
lista=[]
#Recorre columnas, para obtner los litros por día
for i in range(len(matriz[0])):
suma_lista=0
for j in range (len(matriz)):
suma_lista+=matriz[j][i]
lista.append(round(suma_lista,2))
if suma_lista>suma:
suma=suma_lista
dias=("lunes","martes","miércoles","jueves","viernes","sábado","domingo")
dia="Por día"+"\n"
#Obtiene la suma de los valores por día
for i, j in enumerate (lista):
dia+=dias[i] + "\t"+ "suma es: "+ "\t"+str(j)+ "\n"
#Imprime los valores por día y la suma de agua
print(dia)
print("suma total",round(total,3))