ejercicio de aplicacion real
este ejercicio es el mismo que ya se habia tratado (el de la maquina que revisa las resistencias), la diferencia en este caso es que vamos a dar al usuario la opcionalidad de guardar sus valores ingresados en un documento .txt y de la misma forma se le permitira extraer los valores del mismo si es que el asi lo desea:
from pylab import *
lcs=[]
lci=[]
lc=[]
lri=[]
lrs=[]
con=0
listarangos=[]
listaprag=[]
suma=0
listavalores=[]
listaprom=[]
sumrang=0
sumprom=0
Lno=[]
datablaA={"2A2":1.880,"3A2":1.023,"4A2":0.729,"5A2":0.577,"6A2":0.483,"7A2":0.419,"8A2":0.373,"9A2":0.377,"10A2":0.308,"11A2":0.285,"12A2":0.266,"13A2":0.249,"14A2":0.235,"15A2":0.223}
datablaD3={"2D3":0,"3D3":0,"4D3":0,"5D3":0,"6D3":0,"7D3":0.076,"8D3":0.136,"9D3":0.184,"10D3":0.223,"11D3":0.256,"12D3":0.284,"13D3":0.308,"14D3":0.329,"15D3":0.348}
datablaD4={"2D4":3.268,"3D4":2.574,"4D4":2.282,"5D4":2.114,"6D4":2.004,"7D4":1.924,"8D4":1.864,"9D4":1.816,"10D4":1.777,"11D4":1.744,"12D4":1.717,"13D4":1.692,"14D4":1.671,"15D4":1.652}
vc=int(input("dame el valor central de las mediciones "))
l=int(input("dame el numero de muestras "))
d=int(input("dame el numero de datos por muestra "))
res=int(input("dame la tolerancia de las muestras "))
d1=str(d)
dA=d1+"A2"
dD3=d1+"D3"
dD4=d1+"D4"
dD4d=datablaD4[dD4]
dD3d=datablaD3[dD3]
dAd=datablaA[dA]
vali="si"
validacion=str(input("si deseas usar tus datos anteriormente usados dame un si de lo contrario dame un no "))
if validacion in vali:
archivo=open("rvacio.txt","w+")
for i in range(0,l):
for j in range(0,d):
print ("dame el dato ",j+1," de la muestra ",i+1, end="")
r=int(input(":"))
listavalores.append(r)
suma=r+suma
rc=str(r)
archivo.write(rc+"\n")
print ()
prom=suma/d
listaprom.append(prom)
suma=0
else:
archivo=open ("rvacio.txt","r")
for linea in archivo.readlines():
l0=linea
#print(l)
l1=float(l0)
Lno.append(l1)
#print (Lno)
#largo=l*d
largo=0
for i in range(0,l):
for j in range(0,d):
r=Lno[largo]
listavalores.append(r)
suma=r+suma
largo=largo+1
print ()
prom=suma/d
listaprom.append(prom)
suma=0
#print (listavalores)
#print (listavalores)
#print (listaprom)
for z in range(0,l):
ma=0
mi=3000
for x in range(0,d):
if listavalores[con]<mi:
mi=listavalores[con]
if listavalores[con]>ma:
ma=listavalores[con]
con=con+1
rang=ma-mi
listarangos.append(rang)
c=0
stdato=((8*d)-6)//2
sp=" "
spdt=stdato*sp
stdatores=(8*d)-2
spdtsal= stdatores*sp
print("N "+spdt+"datos "+spdt+" prom"+" rang")
for i in range(0,l):
print ('%2d'%(i+1),end="")
for j in range(0,d):
print ('%8d'%(listavalores[c]),end="")
c=c+1
print ('%8.1f'%(listaprom[i]),end="")
print ('%8.1f'%listarangos[i])
for q in range(0,l):
lc.append(vc)
for w in range(0,l):
sumrang=sumrang+listarangos[w]
promrang=sumrang/l
for o in range(0,l):
sumprom=sumprom+listaprom[o]
promprom=sumprom/l
li= promprom-(dAd*promrang)
for t in range(0,l):
lci.append(li)
ls= promprom + (dAd*promrang)
for u in range (0,l):
lcs.append(ls)
for y in range (0,l):
listaprag.append(res)
lir= (dD3d)*(promrang)
for k in range (0,l):
lri.append(lir)
lsr= (dD4d)*(promrang)
for n in range (0,l):
lrs.append(lsr)
print(spdtsal+"prom",end="")
print('%8.1f'%(promprom),end="")
print('%8.1f'%(promrang))
print(spdtsal+" lci",end="")
print('%8.1f'%(li),end="")
print('%8.1f'%(lir))
print(spdtsal+" lcs",end="")
print('%8.1f'%(ls),end="")
print('%8.1f'%(lsr))
plt.title("promedios")
plt.plot(lc, label="v central",linestyle='-.')
plt.plot(lcs, label="lcs",linestyle=':')
plt.plot(lci, label="lci",linestyle=':')
plt.plot(listaprom, label="promedios",marker='o')
plt.legend(loc="lower center")
plt.show()
plt.title("rangos")
plt.plot(listarangos, label="rangos",marker='o')
plt.plot(listaprag, label="v tolerancia",linestyle="-.")
plt.plot(lri,label="lci", linestyle=":")
plt.plot(lrs, label="lcs", linestyle=":")
plt.legend(loc="lower center")
plt.show()
en la siguiente imagen podemos ver el programa cuando se tienen que ingresar los datos para que después se puedan mandar llamar
en esta imagen se ve como se selecciona la opción de que no se desea usar datos nuevos y por lo tanto se manda a llamar los datos guardados haciendo el calculo sin necesidad de ingresar datos nuevos.
from pylab import *
lcs=[]
lci=[]
lc=[]
lri=[]
lrs=[]
con=0
listarangos=[]
listaprag=[]
suma=0
listavalores=[]
listaprom=[]
sumrang=0
sumprom=0
Lno=[]
datablaA={"2A2":1.880,"3A2":1.023,"4A2":0.729,"5A2":0.577,"6A2":0.483,"7A2":0.419,"8A2":0.373,"9A2":0.377,"10A2":0.308,"11A2":0.285,"12A2":0.266,"13A2":0.249,"14A2":0.235,"15A2":0.223}
datablaD3={"2D3":0,"3D3":0,"4D3":0,"5D3":0,"6D3":0,"7D3":0.076,"8D3":0.136,"9D3":0.184,"10D3":0.223,"11D3":0.256,"12D3":0.284,"13D3":0.308,"14D3":0.329,"15D3":0.348}
datablaD4={"2D4":3.268,"3D4":2.574,"4D4":2.282,"5D4":2.114,"6D4":2.004,"7D4":1.924,"8D4":1.864,"9D4":1.816,"10D4":1.777,"11D4":1.744,"12D4":1.717,"13D4":1.692,"14D4":1.671,"15D4":1.652}
vc=int(input("dame el valor central de las mediciones "))
l=int(input("dame el numero de muestras "))
d=int(input("dame el numero de datos por muestra "))
res=int(input("dame la tolerancia de las muestras "))
d1=str(d)
dA=d1+"A2"
dD3=d1+"D3"
dD4=d1+"D4"
dD4d=datablaD4[dD4]
dD3d=datablaD3[dD3]
dAd=datablaA[dA]
vali="si"
validacion=str(input("si deseas usar tus datos anteriormente usados dame un si de lo contrario dame un no "))
if validacion in vali:
archivo=open("rvacio.txt","w+")
for i in range(0,l):
for j in range(0,d):
print ("dame el dato ",j+1," de la muestra ",i+1, end="")
r=int(input(":"))
listavalores.append(r)
suma=r+suma
rc=str(r)
archivo.write(rc+"\n")
print ()
prom=suma/d
listaprom.append(prom)
suma=0
else:
archivo=open ("rvacio.txt","r")
for linea in archivo.readlines():
l0=linea
#print(l)
l1=float(l0)
Lno.append(l1)
#print (Lno)
#largo=l*d
largo=0
for i in range(0,l):
for j in range(0,d):
r=Lno[largo]
listavalores.append(r)
suma=r+suma
largo=largo+1
print ()
prom=suma/d
listaprom.append(prom)
suma=0
#print (listavalores)
#print (listavalores)
#print (listaprom)
for z in range(0,l):
ma=0
mi=3000
for x in range(0,d):
if listavalores[con]<mi:
mi=listavalores[con]
if listavalores[con]>ma:
ma=listavalores[con]
con=con+1
rang=ma-mi
listarangos.append(rang)
c=0
stdato=((8*d)-6)//2
sp=" "
spdt=stdato*sp
stdatores=(8*d)-2
spdtsal= stdatores*sp
print("N "+spdt+"datos "+spdt+" prom"+" rang")
for i in range(0,l):
print ('%2d'%(i+1),end="")
for j in range(0,d):
print ('%8d'%(listavalores[c]),end="")
c=c+1
print ('%8.1f'%(listaprom[i]),end="")
print ('%8.1f'%listarangos[i])
for q in range(0,l):
lc.append(vc)
for w in range(0,l):
sumrang=sumrang+listarangos[w]
promrang=sumrang/l
for o in range(0,l):
sumprom=sumprom+listaprom[o]
promprom=sumprom/l
li= promprom-(dAd*promrang)
for t in range(0,l):
lci.append(li)
ls= promprom + (dAd*promrang)
for u in range (0,l):
lcs.append(ls)
for y in range (0,l):
listaprag.append(res)
lir= (dD3d)*(promrang)
for k in range (0,l):
lri.append(lir)
lsr= (dD4d)*(promrang)
for n in range (0,l):
lrs.append(lsr)
print(spdtsal+"prom",end="")
print('%8.1f'%(promprom),end="")
print('%8.1f'%(promrang))
print(spdtsal+" lci",end="")
print('%8.1f'%(li),end="")
print('%8.1f'%(lir))
print(spdtsal+" lcs",end="")
print('%8.1f'%(ls),end="")
print('%8.1f'%(lsr))
plt.title("promedios")
plt.plot(lc, label="v central",linestyle='-.')
plt.plot(lcs, label="lcs",linestyle=':')
plt.plot(lci, label="lci",linestyle=':')
plt.plot(listaprom, label="promedios",marker='o')
plt.legend(loc="lower center")
plt.show()
plt.title("rangos")
plt.plot(listarangos, label="rangos",marker='o')
plt.plot(listaprag, label="v tolerancia",linestyle="-.")
plt.plot(lri,label="lci", linestyle=":")
plt.plot(lrs, label="lcs", linestyle=":")
plt.legend(loc="lower center")
plt.show()
en la siguiente imagen podemos ver el programa cuando se tienen que ingresar los datos para que después se puedan mandar llamar
en esta imagen se ve como se selecciona la opción de que no se desea usar datos nuevos y por lo tanto se manda a llamar los datos guardados haciendo el calculo sin necesidad de ingresar datos nuevos.
Comentarios
Publicar un comentario