Proyecto. Leyendo y grabando datos a un archivo

Al principio del programa se debe de decidir si se quiere grabar datos nuevos a un archivo vacio llamado tabla o usar los de algun otro archivo existente.
Los datos al grabarse al archivo estaban en una sola columna, lo que hace el programa es que pasa esa columna a una linea, los espacios los cambia por comas para poder pasarlos a una lista, ya de ahi la lista se divide de acuerdo a las muestras que haya.
Para leer las lineas se empleo un el readline(), ya de ahi se hicieron los cambios como se menciono anteriormente.

  • Código:

from pylab import *
from tabulate import *
import os

plt.ioff()
dicc={}
plt.ioff()
lista=[]
listag=[]
listam=[]
listac=[]
rangofil=[]
promi=[]
promind=[]
proms=[]
rangoind=[]
rind=[]
datos=[]
indice=[]

#FUNCION PARA TOMAR DATOS DE CADA LINEA PARA CALCULOS
def parse_tuple(string):
try:
s = eval(str(string))
if type(s) == tuple:
return s
return
except:
return

print("""\t\tDe acuerdo con la investigación realizada respecto de datos\n 
que involucran revision de calidad, dependiendo de los subgrupos manejados,\n
que en este caso seran indicados, hay una tabla de los coeficientes de A2, D3, D4,\n
por lo que ya son valores fijos, favor de verificar la tabla\n""")

A2=float(input("Ingrese el valor de A2: "))
D3=float(input("Ingrese el valor de D3: "))
D4=float(input("Ingrese el valor de D4: "))
print("\nAhora debe escoger si quiere utilizar datos de un archivo, teclear: R \no ir grabando nuevos datos a otro archivo llamado \"tabla\" y utilizarlos teclear: N")
decision=input("\n¿Quiere utilizar los datos del documento tabla?: ")
print()

#PARA GRABAR DATOS NUEVOS EN ARCHIVO TABLA
if(decision=='N'):
n=int(input("Agregue numero de muestras: "))
col=int(input("Indique el numero de subgrupos: "))
print()

#PARA EL INDICE
for w in range(n):
w=w+1
indice.append(w)

#PARA LLENADO DE MUESTRAS
archivo=open("tabla.txt","a+")
contenido=archivo.read()
archivo.seek(0)
for  i in range(n):
for j in range(col):
print("Ingrese datos para la muestra %s"%str(i+1))
z=input()
archivo.write(z)
archivo.write("\n")
print()
archivo.close()

#QUITANDO SALTOS DE LINEA
fi = open("tabla.txt",'r')   
cam = fi.read()    
cam = cam.replace("\n"," ") 
fi.close()
corregido = open("tabla.txt",'w')    
corregido.write(cam)
corregido.close() 

#Haciendolo lista
archivo=open("tabla.txt",'r')   
linea=archivo.readline() 
li=str(linea)
buscar=" "
reemplazar_por = "," 
aa=li.replace(buscar, reemplazar_por)
value = parse_tuple(aa)
y=list(value)
u=np.array(y)

for p in range(len(y)):
lista.append(y[p])
listac.append(y[p])
if(len(listac)==col):
listam.append(listac)
listag.append(listam)
listam=[]
listac=[]


#RECICLANDO DATOS
elif(decision=='R'):
n=int(input("¿Cuantas muestras tiene el archivo?: "))
col=int(input("¿Cuantos subgrupos contiene?: "))
nombre=input("Nombre del archivo, con extension: ")
print()
fi = open(nombre,'r')   
cam = fi.read()    
cam = cam.replace("\n"," ") 
fi.close()
corregido = open(nombre,'w')    
corregido.write(cam)
corregido.close() 

archivo=open(nombre,'r')   
linea=archivo.readline() 
li=str(linea)
buscar="  "
reemplazar_por = "," 
aa=li.replace(buscar, reemplazar_por)
value = parse_tuple(aa)
y=list(value)
u=np.array(y)

#PARA EL INDICE
for w in range(n):
w=w+1
indice.append(w)

for p in range(len(y)):
lista.append(y[p])
listac.append(y[p])
if(len(listac)==col):
listam.append(listac)
listag.append(listam)
listam=[]
listac=[]

#PROMEDIOS Y RANGOS INDIVIDUALES
for p in range(len(y)):
promi.append(y[p])

proms.append(promi)
if(len(proms)==col):
dato2=np.array(proms)
Prom=dato2.mean()
promind.append(Prom)

proms=[]
promi=[]

rind.append(y[p])

rind.sort()
if(len(rind)==col):
rango1= rind[-1]- rind[0]
rangofil.append(rango1)

rind=[]

for t in range(n):
listag[t].append(promind[t])
listag[t].append(rangofil[t])

#LIMPIO PANTALLA 
os.system('cls')

#TABLA DE MUESTRAS
print(tabulate(listag,headers=["No. muestra","Lecturas","PROM","RAN",], showindex=indice,tablefmt='fancy_grid'))

#PROMEDIO  Y RANGOGENERAL
promgeneral=u.mean()
rangogeneral=np.array(rangofil)
rangogeneral=rangogeneral.mean()

#FORMULAS
LCIX=promgeneral-(A2*rangogeneral) 
LCIR=D3*rangogeneral 
LCSX=promgeneral+(A2*rangogeneral) 
LCSR=D4*rangogeneral 

#MINI TABLA
dicc2={'M1':['PROM','LCI','LCS'],'M2':[[promgeneral,rangogeneral],[LCIX,LCIR],[LCSX,LCSR]],}
print()
print(tabulate(dicc2,headers=["   "," De Prom ind / De Rang ind"], tablefmt='simple'))

#LCIX 
y1=[]
y1.append(LCIX)
y1=(y1) *n
y1=np.array(y1)

#LCSX 
y2=[]
y2.append(LCSX)
y2=(y2) *n
y2=np.array(y2)

#LCIR 
y3=[]
y3.append(LCIR)
y3=(y3) *n
y3=np.array(y3)

#LCSR 
y4=[]
y4.append(LCSR)
y4=(y4) *n
y4=np.array(y4)

#PARA GRAFICAR PROMEDIO GENERAL
y8=[]
y8.append(promgeneral)
y8=(y8) *n
y8=np.array(y8)

#PARA GRAFICAR RANGO GENERAL
y9=[]
y9.append(rangogeneral)
y9=(y9) *n
y9=np.array(y9)

plt.subplot(1,2,1)
#PARTE DE LAS X
plt.plot(y1, label="LCI", marker='^', linestyle=':', color='b')
plt.plot(y2, label="LCS", marker='p', linestyle=':', color='g')
plt.plot(y8, label="X", marker='x', linestyle='-', color='r')
plt.plot(promind, label="PROM", marker='o', linestyle='-', color='c')
plt.legend(loc="upper right")
plt.title("GRAFICA PARA LOS PROMEDIOS")
plt.xlabel("Muestras\n(la muestra 0 representa a la muestra 1 y asi sucesivamente)")
plt.ylabel("Lecturas")
plt.grid(True)

plt.subplot(1,2,2)
#PARTE DE LAS R
plt.plot(y3, label="LCI", marker='h', linestyle='--', color='m')
plt.plot(y4, label="LCS", marker='+', linestyle='--', color='y')
plt.plot(y9, label="X", marker='*', linestyle='-', color='k')
plt.plot(rangofil, label="PROM", marker='D', linestyle='-', color='b')
plt.title("GRAFICA PARA LOS RANGOS")
plt.xlabel("Muestras\n(la muestra 0 representa a la muestra 1 y asi sucesivamente)")
plt.ylabel("Rangos")
plt.legend(loc="upper right")
plt.grid(True)

plt.show()
plt.ion()
archivo.close()


  • Ejecución:






Programas de la Unidad 3

PROGRAMA 1
#if sencillo
ana=16

if ana>=18:

print("Mayor de edad")
else:
print("Menor de edad")

PROGRAMA 2
#elif
a=25

if(a<22):

print("Dentro del if positivo")
#es una pregunta en un else, un if dentro de un else
elif(a==25):
print("dentro del elif")
else:
print("dentro del else")
#if anidado
'''
b=20
if(b):
else if (b==14):
print()
  #else
'''

PROGRAMA 3
#if independiente
age=21

if age>16:

print("Apenas puedes conducir")
else:
print("Eres joven para conducir")

if age>=21:
print("puedes conducir con seguro")
elif age>=16:
print("Puedes conducir con permiso o licencia")
else:
print("NO puedes conducir")


PROGRAMA 4
#and or not en un if
age=15

if((age>=1) and (age<=18)):

print("niño, pubertillo o casi adulto")
elif((age==21) and (age<=18)):
print("adulto, adulto tercera edad")
elif not(age==30):
print("EStas ya casado o lo haras con tu mejor amiga")
else:
print("Tendremos fiesta??")

PROGRAMA 5
#ejemplo con elif
edad=int(input("Ingrese edad: "))

if edad==16:

print("Permiso para conducir en Mx")
elif((edad<=18) and (edad>=16)):
print("No entra a fiestas pero puede conducir")
elif((edad>=18) and (edad<21)):
print("Puede votar y conducir en Mx")
elif((edad>=21) and (edad<24)):
print("Vota, bebe alcohol en el extranjero y conduce en MX")
elif (edad>=24):
print("Vota, bebe extranjero y conduce en Europa y MX")
else:
print("Nada")


PROGRAMA 6
#para poder hacer figuras en python
import pygame

from pygame.locals import *

import sys
import math
#el asterisco importa todo lo de la libreria
#import random
from random import *
AZUL=(9,35,67)
VERDEPASTO=(17,99,67)
VERDE=(10,255,10)
BLANCO=(222,224,200)
GRIS=(186,186,177)
GRISCASTILLO=(158,158,158)
NEGRO=(2,3,3)
ROJO=(255,0,0)
CAFE=(90,50,15)
TRUENO=(19,45,77)

Dimensiones=(800,800)

#Linea: La siguiente linea de codigo dibuja una linea de color verde desde el punto [10,
#donde el primer valor de cada lista es la coordenada en x y el segundo la coordenada
#indica el grosor de la linea

def dibujar_fig(pantalla,pos):
pygame.draw.line(pantalla,VERDE,[10,10],[650,470],2)
pygame.draw.rect(pantalla,ROJO,[150,50,400,400],0)
pygame.draw.circle(pantalla,CAFE,[325,270],15,0)
pygame.draw.polygon(pantalla,TRUENO,[[350,10],[20,400],[680,400]],0)
pygame.draw.arc(pantalla,GRIS,[150,50,400,400],0,math.pi,2)

#Rectangulo: para dibujar un rectangulo, igual que para la linea el primer parametro es la variable Pantalla
#despues el color de la figura, y en este caso para dibujar un rectangulo usamos una lista con cuatro elementos
#de los cuales el primer par corresponden a las coordenadas (x,y) de la esquina superior izquierda, los otros dos
#indican el tamaño de la figura (ancho y alto). Asi la siguiente dibuja un rectangulo que en realidad es un cuadrado
#con coordenadas iniciales  x= 150, y= 50, con un ancho y alto de 400

#Circulo: a esta funcion se le indica con una lista de dos elementos el centro del circulo, despues el radio y de igual
#forma que la linea el ultimo parametro es el grosor de la linea, con la excepcion de que si usamos 0
#el circulo se dibujará con relleno (esto funciona tambien para para la funcion rect).

def dibujar_txt(pantalla,texto,color):
Fuente=pygame.font.Font(None,25)
Texto=Fuente.render(texto,True,color)
pantalla.blit(Texto,[250,10])
def main():
pygame.init()
pantalla=pygame.display.set_mode(Dimensiones)
pygame.display.set_caption("INST TEC AGS")
game_over=False
reloj=pygame.time.Clock()
while not game_over:
for evento in pygame.event.get():
if evento.type==pygame.QUIT:
game_over=True
pantalla.fill((255,255,255))
dibujar_fig(pantalla,[25,25])
dibujar_txt(pantalla,"Prog. Visual",TRUENO)
pygame.display.flip()
reloj.tick(60)
pygame.quit()


if __name__=="__main__":
main()

PROGRAMA 7
#unidad 3, manejo de elementos de cadenas

cadena="Texto"
print(cadena)
print(cadena[1])
print(len(cadena))
print(cadena.lower()) #hace minusculas
print(cadena.upper()) #hace mayusculas
numero=7.9867
num=str(numero)
print(str(numero))
print("numero %s"%num[0])


var1="hola"
var2="Ariadna"
#var3=var1+var2
print(var1+' '+var2)


#Juan Daniel Muñoz --> JUAN DANIEL MUÑOZ --> Juan Daniel MUÑOZ
cadena2="Juan Daniel Muñoz"
print(cadena2.upper())
n1=cadena2[:12]
nom=cadena2[12:]
n2=nom.upper()

print(n1 + n2)


PROGRAMA 8
#uso de elif y for
x=20

if(x<0):

x=0
print("negativo cambiado a cero")
elif(x==0):
print("sencillo")
elif(x==1):
print("mas")

palabras=['gatos','ventana','defensas']

#con for w in = for i=0; i<=2; i++
#w es la posicion del elemento en la lista, empieza en cero
#en el print te pone lo que esta en esa posicion y la longitud de ese elemento
for w in palabras:
print(w,len(w))

#el range es la condicion i<=2; i++
#imprime de 0 a . con salto de linea
for i in range(5):
print(i)


PROGRAMA 9
#uso de len y range en el For
#imprime con /n del 0 al 4

for i in range(5):
print(i)
#imprime con /n posicion y cadena
a=['maria','tenia','un','corderito']
for c in range(len(a)):
print("%d %s"%(c, a[c]))

#poner m a r i a
for m in range(len(a[0])):
print("%s "%(a[0][m]))

PROGRAMA 10
#for anidado
#range(inicio,fin), no incluye el 10, 1 al 9


for n in range(2,10):

for x in range(2,n):

if ((n%x)==0):
print("n%d igual a %d * %d "%(n,x,n//x))
break #rompe el ciclo en el que esta
else:
print("n es primo %d"%(n))
#print("el valor de n es %d y el de x es %d"%(n,x))
num=int(input("\nDame un numero para una tabla: "))
for y in range(num,10):
for i in range(1,10):
print("%d * %d = %d"%(num,i,num*i))
print()
num=num+1


PROGRAMA 11
#uso de range con inicio y fin
#numero par o impar

for num in range(2,10):

if (num%2==0):

print("par %d"%(num))
continue #salta la siguiente linea inmediata
print("impar %d"%(num))


PROGRAMA 12
#el end no hace salto de linea
#primer for

print("inicio")

#imprime 3 veces con [0,1,2]

for i in [0,1,2]:
print("hola",end="") 
print()
print("final")

#segundo for
print("\ninicio")
for i in [1,1,1]:
print("hola2",end="")
print()
print("final")

#tercer for
#no lo imprime nada porque la lista esta vacia
print("\ninicio")
for i in []:
print("hola3",end="")
print()
print("final")

#cuarto for
print("\ninicio")
for i in [3,4,5]:
print("hola4 %d"%(i))
print()
print("final")

#quinto for
print("\ninicio")
for i in ["Susi","Lopez",100]:
print("hola5 %s"%(i))
print()
print("final\n")

#sexto for
for numero in [1,2,3,4,5]:
print(" %d * %d = %d"%(numero, numero, numero**2))
print()
print("final")

#septimo for
#la i es la posicion del caracter, i=0 --> S
for i in "SUSANA":
print("Dame una %s"%(i))
print()
print("Que dice %s\n"%("SUSANA"))
print("mas fuerte %s"%("SUSANA"))
for i in [1,1,1]:
print("Tres veces %s"%("SUSANA"))


PROGRAMA 13
#si la ingresa mal 3 veces marcara error de ingreso
u='Susilopez'

c='galleta'


for i in range(1,4):
a=input("Ingrese su usuario: ")
if (a==u):
b=input("\nIngrese contraseña: ")
break
print("Error usuario")
for n in range(1,4):
if(b==c):
print("\nBienvenida Susi Lopez")
break
else:
print("Error contraseña")
b=input("\nIngrese contraseña: ")


PROGRAMA 14
#while con condiciones de paro
edad=0

while(edad<18):

edad=edad+1
print("edad vale",edad)
if(edad%2 ==0):
print("edad par es",edad)
continue #no hace todo lo de abajo
print("Saltare si no tal vez")
print("Esta saltara nooo, siiii")
print("Felicidades eres mayor de edad",edad)


PROGRAMA 15
#para llenar listas vacias
cien=[]

par=[]

impar=[]
c=1

while(c<101):
cien.append(c)
if(c%2 ==0):
par.append(c)
else:
impar.append(c)
c+=1
print("Valores totales")
print(cien)
print("Pares")
print(par)
print("Impares")
print(impar)


PROGRAMA 16
#escriba un programa que pida dos numeros enteros
#continue mientras sean cada vez mas grandes

primero=int(input("Dame un numero: "))

segundo=int(input("Dame otro numero mayor que el primero: "))


while(segundo>primero):
primero=segundo
segundo=int(input("Escriba un numero mayor que "+str(primero)+ " "))
print()
print(segundo, "no es mayor que", str(primero)+".")
print("Programa terminado")

#escriba un programa que pida la cantidad de numeros
#positivos hasta que sea la cantidad que usted decida de positivo

cont=0
i=int(input("Dame un numero positivo: "))
while(cont<5):
if(i>0):
cont=cont+1
i=int(input("Dame un numero positivo: "))
else:
print("Ingreso negativos")
break
print("Programa terminado con ",str(cont)+ " numeros positivos")


PROGRAMA 17
#escriba un programa que pida un valor limite positivo y a continuacion
#pida numeros hasta que la suma de los numeros introducidos supere el limite inical

suma=0

i=int(input("Dame un limite: "))

while(suma<i):
j=int(input("Dame un numero: "))
suma=suma+j
print("Programa terminado")


PROGRAMA 18
#el do while como tal no esta registrado
a=0

do:

print(a)
a++
while(a!=3)

PROGRAMA 19
#uso de abs, conjugate y evalf
from sympy import arg , conjugate ,sqrt ,I
#from math import *
#no resuleve la operación la deja solo simplificada
#sin comentario de math entonces da un resultado #numérico

a= sqrt (3)+I

print(conjugate (a))


print(abs(a))
print(arg(a))

#el valor real de alguna de las operaciones efectuadas
c=arg(a). evalf ()
print(c)

PROGRAMA 20
#uso de Symbol, E, I, re, expand
from sympy import Symbol ,E,I,re

x= Symbol ('x', real = True )
a=E **(I*x)
b=a. expand ( complex = True )
print(b)
c=a **3
d=c. expand ( complex = True ). expand ( trig = True )
print(d)

print(re(d))
f=c. expand ( complex = True )
print(re(f))
res=(re(f)-re(d)). expand ( trig = True )

print(res)


PROGRAMA 21
#algebra 4 usando una variable simbólica y solve
from sympy import Symbol , solve
x= Symbol ('x ')
print(solve (x**4 -1 ,x))


PROGRAMA 22
#Si el resultado esperado es amplio podemos guardarlo en una lista.
from sympy import Symbol , solve,I
x= Symbol ('x ')
print(solve (x**4 -1 ,x))
#es diferente
a= solve (x**4 -I,x)
print(a)


PROGRAMA 23
#bucle para obtener los valores numericos de cada una de las soluciones
from sympy import Symbol , solve,I



x= Symbol ('x ')
print(solve (x**4 -1 ,x))
#es diferente
a= solve (x**4 -I,x)
#print(a)

for b in a:
print(b.evalf())


PROGRAMA 24
#uso de symplify para numeros complejos
#importar sympy
from sympy import I, simplify

print(simplify(((1+I) / (1+2 * I))))


PROGRAMA 25
#grafica simple
from pylab import *

#importando pylab que es en donde se encuentra todo lo de ploteo
lista1 = [11,2,3,15,8,13,21,34]
lista= []
for i in range (0,10):
lista.append(i)
#estamos declarando la lista, que los elementos de la grafica
plt.plot(lista)
#dibuje los puntos en X y Y
plt.show()
#mostrar la grafica

PROGRAMA 26
#grafica con cuadricula
from pylab import *

plt.ioff() #desactiva el modo interactivo
lista3=[9,15,9,15,9,15,9,15] #lista de 8 valores
plt.plot(lista3) #no dibuja datos de la lista3
plt.show() #Fuerza dibujo de datos de lista
plt.title("Grafica") #Establece el titulo pero no lo muestra en grafico
plt.show() #actualiza grafico con nuevo titulo
plt.grid(True) #Activa cuadricula, pero no la muestra
plt.show()
plt.ion() #activa modo interactivo de dibujo


PROGRAMA 27
#grafica con leyendas y formas de linea del grafico
from pylab import *

lista1=[11,2,3,15,8,13,21,34]
lista2=[2,3,4,2,3,6,4,10]
lista3=[9,15,9,15,9,15,9,15]
#plt.plot(lista1, label ="Enero")
#plt.plot(lista2, label ="Febrero")
#plt.plot(lista3, label ="Marzo")
#plt.legend()

plt.plot(lista1,marker='x', linestyle=':', color='b', label ="Enero")
plt.plot(lista2,marker='*', linestyle='-', color='g', label ="Febrero")
plt.plot(lista3,marker='o', linestyle='--', color='r', label ="Marzo")
plt.legend(loc="upper left")

plt.show()


PROGRAMA 28
#grafica con leyenda
from pylab import *

lista3=[9,15,9,15,9,15,9,15] #lista de 8 valores
plt.plot(lista3, label ="Algo de leyenda")
#plt.legend()

#Para colocar la leyenda en la parte superior del gráfico y a la izquierda:
plt.legend(loc="upper left")

plt.show()

PROGRAMA 29
#grafica con titulos en ejes
from pylab import *

plt.ioff()
lista=[11,2,5,8,10,9,4,1]
lista1=[3,5,7,8,4,1,5,3]
plt.plot(lista, label="Ayer", marker='D', linestyle='-.', color='g')
plt.plot(lista1, label="Hoy", marker='s', linestyle=':', color='m')
#lower,left, upper, lower, center
plt.legend(loc="lower left")


plt.title("Comida")
plt.xlabel("Dias")
plt.ylabel("Manzanas")
plt.grid(True)


plt.show()
plt.ion()


PROGRAMA 30
#con random da numeros aleatorios
import random
rand_num=random.randrange(10)
print(rand_num)

#print (random.randrange(10))

while(rand_num !=5):

print(rand_num)

rand_num=random.randrange(10)

PROGRAMA 31
#se puede utilizar random dentro de ciclos
import random
par=0
impar=0
n=0

while(n<20):

num=random.randrange(30)

if(num%2==0):
par=par+1
print(num)
elif(num%2==0):
impar=impar+1
print(num)
n=n+1
print("Par fueron: ",par)
print("Impar fueron: ",impar)


PROGRAMA 32
#se necesita pylab para poder utilizar np.array
from pylab import *
a= np.array([1,2,3,4])
print(a+1)

#array ([1,2,3,4])
print(2**a)
#array([2,4,8,16])


PROGRAMA 33
#diferentes cosas que se pueden hacer con arreglos
from pylab import *

lista=[1,2,3,4,5]
print(type(lista))
a=np.array(lista)
print(type(a))

#----------------
#pyhton lindo no?
a=[1,2,3]
b=a[:] #copia el arreglo
print("b original",b)
b[0]=100
print("b modificada",b) #se modifican el original y copia
print(a), print()
#_________________
a=np.array([1,2,3])
b=a[:]
print("b original",b)
b[0]=100
print("b modificada",b)
print(a), print()
#______como se resuelve

a=np.array([1,2,3])
b=a[:].copy() #fuerzo la copia, no se modifica el original
print("antes",b)
b[0]=100
print("despues",b)
print("valor de a",a)
plt.plot(a)
plt.show()


PROGRAMA 34
#Con for se puede ir llenando una matriz o arreglo
from pylab import *
a=np.array([[1,1,1],
[1,1,1],
[1,1,1]])

print("Arreglo ",a)

for i in range(len(a)):

for j in range(len(a)):

print(a[i][j], end="")
print()
print()
for ren in a:
for col in ren:
print(col, end="")
print()


PROGRAMA 35
#importando numpy para llenar matrices y mas
import numpy as np

#para solamente tener la librerias de np que son de arreglo
a=np.append([1,2,3],[[4,5,6],[7,8,9]])
print("primero",a)

#cuando se especifica el eje, valores
b=np.append([[1,2,3],[4,5,6]],[[7,8,9]],axis=0)
print(b)

#matrices
print(b.ndim)
#forma
print(b.shape)

#auto llenado
print()
a=np.arange(10) #0 ... n-1
print("primer autollenado",a)

b=np.arange(1,9,2) #inicio, final (excluido), paso
print("Llenado por eleccion",b)

c=np.linspace(0,1,6) #inicio, final, numero de puntos
print("Llenado de puntos",c)

d=np.linspace(0,1,5, endpoint=False) #no incluye el final
print("aun no se",d)
print()

#opciones
#llena de unos
a=np.ones((3,3))
print(a)
print()

b=np.zeros((2,2))
print(b)
print()

#llena diagonal principal con 1 y la forma es de 3
c=np.eye(3)
print(c)

#llena la diagonal principal con los valores dados
d=np.diag(np.array([1,2,3,4]))
print(d)
a=np.random.rand(4)
print(a)
#arreglo con dimension de 4
b=np.random.randn(4)
print(b)

d=np.array([1+2j, 3+4j, 5+6*1j])
print(d.dtype)

e=np.array([True, False, False, True])
print(e.dtype)

f=np.array(['Bonjour','hello','hallo'])
print(f.dtype) #unicode, version 7

a=np.diag(np.arange(3))
print(a)

a[1,2]=10 #tercera fila, segunda columna
print(a)
a=np.arange(10)
print(a)

a=np.arange(12).reshape(3,4)
print(a)

i=np.array([[0,1],[1,2]])
a[i,2] #lo mismo es a[i,2*np.ones((2,2),dtype=int)]
print(i)
#array([[2,6],
#           [6,10]])


PROGRAMA 36
#usando matrix para realizar operaciones con matrices, como suma, resta, division
import numpy as np
from numpy import matrix

b=np.array([[0,1,2],[3,4,5]])
print(b)
print(b.ndim) #numero de corchetes al principio indica la dim
print(b.shape)
print(len(b))
print()

c=np.array([[1,2,3],[4,5,6],[7,8,9]])
print(c)
print(c.ndim)
print(c.shape)
print(len(c)) #la longitud da el numero de renglones
print()

d=np.array([[[1], [2]], [[3],[4]]])
print(d)
print(d.ndim)
print(d.shape)
print(len(d))
print()

print('sumas',' ','multiplicacion')
a=np.array([1,2,3,4])
print(a)
a=a+1
print(a)
a=a*3
print(a)

x1=np.array([[[1,2,3],[3,4,5]],[6,7,8]])
y1=np.array((1,2,3))
print('de x',x1.ndim)
print('de y',y1.ndim)

print('operadores')
a= np.array([1,1,0,0], dtype=bool)
b= np.array([1,0,1,0], dtype=bool)
print(a|b)
print(a&b)
print(a^b)

x=np.array([1,2,3,4])
print(x.sum())

print('suma renglon y columna')
x=np.array([[1,1],[2,2]])
print(x)
#por columna
print(x.sum(axis=0)) #se suman los ejes verticales (columnas)
#por renglon
print(x.sum(axis=1)) #se suman los ejes horizontales (renglones)

print('multiplicacion')
a=matrix([[1,3,-5],[3,4,2],[-5,2,0]]) #con matrix hace la multiplicacion directo
print(a)
b=matrix([[1],[5],[3]])
print(b)
a=a*b
print(a)

#estadistico
#desviacion media
print(x.mean())
#desviacion estandar
print(x.std())
print(np.median(x))
print(x.min())
print(x.max())

#indice del maximo
print(np.argmax(x))
#algebra lineal basica
print('transpuestas')
b=matrix([[1],[5],[3]]) #como esta con items individuales se hace una columna
print(b)
print(b.T) #imprime transpuesta
print(b.H) #Se calcula la hermitica (transpuesta conjugada)
c=a.I #Se calcula la inversa
print(c)
print(a*c) #se multiplica las matrices a y c


PROGRAMA 37
#import string
#string permite importar lower
def juega(intento=1):
respuesta=str(input("¿De que color es una mora azul? "))
#res=string.lower(respuesta)
print(respuesta)

if respuesta != "azul" and respuesta !="Azul":
if intento<3:
print("\n Creo que no ")
intento +=1
juega(intento) #llamada recursiva
else:
print("\nPierdes!")
else:
print("\nGanas!")


juega()

PROGRAMA 38
def prueba_ambitos():
def hacer_local():
algo="algo local"
def hacer_nonlocal():
#nonlocal algo #hacer que se modifique el algo, lo llama y no se pone entre ()
algo="algo no local"
def hacer_global():
global algo #la convierte en global
algo="algo global"
algo="algo de prueba"
hacer_local()
print("Luego de la asignacion local:",algo)
hacer_nonlocal()
print("Luego de la asignacion no local:",algo)
hacer_global()
print("Luego de la asignacion global:",algo)

prueba_ambitos()
print("In global scope:",algo) #imprime el algo global

Operaciones con matrices

Para poder realizar operaciones que estén bien hechas con matrices, se debe de importar de numpy la librería matrix.
Ya solo antes de un arreglo solo pones matrix([elementos]), y así se pueden realizar hasta divisiones de matrices. Tambien se pueden sacar determinantes sin necesidad de un ciclo for.
Solo se pone np.linalg.det(matriz)  y ya te calcula el determinante de cualquier matriz cuadrada.
Ya si se quiere sacar la dimensión y el tamaño se usa .ndim y .shape respectivamente, después del nombre de la variable donde se tenga el arreglo, y también se debe de importar de numpy el np.
  • Código:
#operaciones con matrices
import numpy as np
from numpy import matrix
a=np.array([[1,2], [3,4]])
print(np.linalg.det(a))

a=np.array([[[1,2],[3,4]],[[1,2],[2,1]],[[1,3],[3,1]]])
print(a.shape)
print(a.ndim)
print(np.linalg.det(a))

b=np.array([[3,2,1],[6,2,-5],[-2,1,2]])
print(b.shape)
print(b.ndim)
print(np.linalg.det(b))

#ejercicio
x=matrix([[2,4,1],[1,-2,3],[5,0,-1]])
y=matrix([[3,-1,-2],[0,5,6],[0,0,9]])
z=matrix([[2,0,-1],[0,-1,2],[1,-2,5]])
c=np.array([[3,2,1],[0,2,-5],[-2,1,4]])

p1=-x-y+z
p2=x+y-z
p3=(3*x) + (z/2)

print("\nParte 1")
print(p1)
print("\nParte 2")
print(p2)
print("\nParte 3")
print(p3)
print("\nDeterminate de matriz: %0.2f"%np.linalg.det(c))

  • Ejecución:

Arreglos y matrices (2)

El concepto de herencias se puede entender con los arreglos.

A continuación, solo importando numpy, podemos hacer varias cosas con los arreglos, desde hacer auto llenados con ceros, unos, o valores random; diagonales, definir tamaño del arreglo, entre muchas otras más.

FORMA 1

#importando numpy para llenar matrices y mas
import numpy as np

#para solamente tener la librerias de np que son de arreglo
a=np.append([1,2,3],[[4,5,6],[7,8,9]])
print("primero",a)

#cuando se especifica el eje, valores
b=np.append([[1,2,3],[4,5,6]],[[7,8,9]],axis=0)
print(b)

#matrices
print(b.ndim)
#forma
print(b.shape)

#auto llenado
print()
a=np.arange(10) #0 ... n-1
print("primer autollenado",a)

b=np.arange(1,9,2) #inicio, final (excluido), paso
print("Llenado por eleccion",b)

c=np.linspace(0,1,6) #inicio, final, numero de puntos
print("Llenado de puntos",c)

d=np.linspace(0,1,5, endpoint=False) #no incluye el final
print("aun no se",d)
print()

#opciones
#llena de unos
a=np.ones((3,3))
print(a)
print()

b=np.zeros((2,2))
print(b)
print()

#llena diagonal principal con 1 y la forma es de 3
c=np.eye(3)
print(c)

#llena la diagonal principal con los valores dados
d=np.diag(np.array([1,2,3,4]))
print(d)
a=np.random.rand(4)
print(a)
#arreglo con dimension de 4
b=np.random.randn(4)
print(b)

d=np.array([1+2j, 3+4j, 5+6*1j])
print(d.dtype)

e=np.array([True, False, False, True])
print(e.dtype)

f=np.array(['Bonjour','hello','hallo'])
print(f.dtype) #unicode, version 7

a=np.diag(np.arange(3))
print(a)

a[1,2]=10 #tercera fila, segunda columna
print(a)
a=np.arange(10)
print(a)

a=np.arange(12).reshape(3,4)
print(a)

i=np.array([[0,1],[1,2]])
a[i,2] #lo mismo es a[i,2*np.ones((2,2),dtype=int)]
print(i)
#array([[2,6],
#  [6,10]])

  • Ejecución:

FORMA 2
#usando matrix para realizar operaciones con matrices, como suma, resta, division
import numpy as np
from numpy import matrix

b=np.array([[0,1,2],[3,4,5]])
print(b)
print(b.ndim) #numero de corchetes al principio indica la dim
print(b.shape)
print(len(b))
print()

c=np.array([[1,2,3],[4,5,6],[7,8,9]])
print(c)
print(c.ndim)
print(c.shape)
print(len(c))  #la longitud da el numero de renglones
print()

d=np.array([[[1], [2]], [[3],[4]]])
print(d)
print(d.ndim)
print(d.shape)
print(len(d))
print()

print('sumas',' ','multiplicacion')
a=np.array([1,2,3,4])
print(a)
a=a+1
print(a)
a=a*3
print(a)

x1=np.array([[[1,2,3],[3,4,5]],[6,7,8]])
y1=np.array((1,2,3))
print('de x',x1.ndim)
print('de y',y1.ndim)

print('operadores')
a= np.array([1,1,0,0], dtype=bool)
b= np.array([1,0,1,0], dtype=bool)
print(a|b)
print(a&b)
print(a^b)

x=np.array([1,2,3,4])
print(x.sum())

print('suma renglon y columna')
x=np.array([[1,1],[2,2]])
print(x)
#por columna
print(x.sum(axis=0)) #se suman los ejes verticales (columnas)
#por renglon
print(x.sum(axis=1)) #se suman los ejes horizontales (renglones)

print('multiplicacion')
a=matrix([[1,3,-5],[3,4,2],[-5,2,0]])  #con matrix hace la multiplicacion directo
print(a)
b=matrix([[1],[5],[3]])
print(b)
a=a*b
print(a)

#estadistico
#desviacion media
print(x.mean())
#desviacion estandar
print(x.std())
print(np.median(x))
print(x.min())
print(x.max())

#indice del maximo
print(np.argmax(x))
#algebra lineal basica
print('transpuestas')
b=matrix([[1],[5],[3]]) #como esta con items individuales se hace una columna
print(b)
print(b.T) #imprime transpuesta
print(b.H) #Se calcula la hermitica (transpuesta conjugada)
c=a.I #Se calcula la inversa
print(c)
print(a*c) #se multiplica las matrices a y c

  • Ejecución:




Matrices (3)

Para poder trabajar con arreglos es necesario importar pylab y numpy (aunque importando pylab se importa también numpy).
Podemos convertir una lista en un arreglo, solo agregando al principio np.array
A lo largo de los códigos se ve claramente lo que se puede hacer con los arreglos, hasta copiarlos y que se modifique tanto el original como la copia.

FORMA 1
#se necesita pylab para poder utilizar np.array
from pylab import *
a= np.array([1,2,3,4])
print(a+1)

#array ([1,2,3,4])
print(2**a)
#array([2,4,8,16])

  • Ejecución:


FORMA 2
#diferentes cosas que se pueden hacer con arreglos
from pylab import *

lista=[1,2,3,4,5]
print(type(lista))
a=np.array(lista)
print(type(a))

#----------------
#pyhton lindo no?
a=[1,2,3]
b=a[:] #copia el arreglo
print("b original",b)
b[0]=100
print("b modificada",b) #se modifican el original y copia
print(a), print()
#_________________
a=np.array([1,2,3])
b=a[:]
print("b original",b)
b[0]=100
print("b modificada",b)
print(a), print()
#______como se resuelve

a=np.array([1,2,3])
b=a[:].copy() #fuerzo la copia, no se modifica el original
print("antes",b)
b[0]=100
print("despues",b)
print("valor de a",a)
plt.plot(a)
plt.show()


  • Ejecución:



FORMA 3
#Con for se puede ir llenando una matriz o arreglo
from pylab import *
a=np.array([[1,1,1],
[1,1,1],
[1,1,1]])

print("Arreglo ",a)

for i in range(len(a)):
for j in range(len(a)):
print(a[i][j], end="")
print()

print()
for ren in a:
for col in ren:
print(col, end="")
print()

#arreglo sin numpy

  • Ejecución:

Random (2)

Con random podemos hacer valores al azar y asignarlos a una variable.
Con ranrange, asignamos el rango de números que queremos, pero no se incluye el último valor del rango.

FORMA 1
#con random da numeros aleatorios
import random
rand_num=random.randrange(10)
print(rand_num)

#print (random.randrange(10))

while(rand_num !=5):
print(rand_num)
rand_num=random.randrange(10)


  • Ejecución:



FORMA 2
#se puede utilizar random dentro de ciclos
import random
par=0
impar=0
n=0

while(n<20):
num=random.randrange(30)
if(num%2==0):
par=par+1
print(num)

elif(num%2==0):
impar=impar+1
print(num)

n=n+1

print("Par fueron: ",par)
print("Impar fueron: ",impar)

  • Ejecución:


Gráficas (5)

Para poder graficar se debe importar pylab (de preferencia todo usando *).
con plt.plot(lista) solo declaramos que queremos que vaya en la gráfica, para poder mostrar la gráfica se debe de poner plt.show().
A lo largo de cada código se puede ver las funciones especificas de las gráficas, como nota extra agregaré los tipos de diseño de las gráficas:

  • Estilos de Líneas (linestyle =):
Línea Sólida
-- Línea discontinua
: Línea punteada
-. Línea punteada discontinua. y
None Ninguna línea

  • Marcadores (marker =):
+ Cruz
. Punto
o Círculo
Estrellas
p  Pentágonos
s  cuadrados
x  Tachados
D  Diamantes
h  Hexágonos y
^  Triángulos

  • Colores (color =):
b, blue
g, green
r, red
c, cyan
m, magenta
y, yellow
k, black
w, white
FORMA 1
#grafica simple
from pylab import *

#importando pylab que es en donde se encuentra todo lo de ploteo
lista1 = [11,2,3,15,8,13,21,34]
lista= []
for i in range (0,10):
lista.append(i)
#estamos declarando la lista, que los elementos de la grafica
plt.plot(lista)
#dibuje los puntos en X y Y
plt.show()
#mostrar la grafica


  • Ejecución:



FORMA 2
#grafica con cuadricula
from pylab import *

plt.ioff() #desactiva el modo interactivo 
lista3=[9,15,9,15,9,15,9,15] #lista de 8 valores
plt.plot(lista3) #no dibuja datos de la lista3
plt.show() #Fuerza dibujo de datos de lista
plt.title("Grafica") #Establece el titulo pero no lo muestra en grafico
plt.show() #actualiza grafico con nuevo titulo
plt.grid(True) #Activa cuadricula, pero no la muestra
plt.show()
plt.ion() #activa modo interactivo de dibujo


  • Ejecución:




FORMA 3
#grafica con leyendas y formas de linea del grafico
from pylab import *

lista1=[11,2,3,15,8,13,21,34] 
lista2=[2,3,4,2,3,6,4,10] 
lista3=[9,15,9,15,9,15,9,15] 
#plt.plot(lista1, label ="Enero") 
#plt.plot(lista2, label ="Febrero") 
#plt.plot(lista3, label ="Marzo") 
#plt.legend()

plt.plot(lista1,marker='x', linestyle=':', color='b', label ="Enero")
plt.plot(lista2,marker='*', linestyle='-', color='g', label ="Febrero")
plt.plot(lista3,marker='o', linestyle='--', color='r', label ="Marzo")
plt.legend(loc="upper left")

plt.show()


  • Ejecución:


FORMA 4
#grafica con leyenda
from pylab import *

lista3=[9,15,9,15,9,15,9,15] #lista de 8 valores
plt.plot(lista3, label ="Algo de leyenda") 
#plt.legend()

#Para colocar la leyenda en la parte superior del gráfico y a la izquierda:
plt.legend(loc="upper left")

plt.show()


  • Ejecución:



FORMA 5
#grafica con titulos en ejes
from pylab import *

plt.ioff()
lista=[11,2,5,8,10,9,4,1]
lista1=[3,5,7,8,4,1,5,3]
plt.plot(lista, label="Ayer", marker='D', linestyle='-.', color='g')
plt.plot(lista1, label="Hoy", marker='s', linestyle=':', color='m')
#lower,left, upper, lower, center
plt.legend(loc="lower left")

plt.title("Comida")
plt.xlabel("Dias")
plt.ylabel("Manzanas")
plt.grid(True)

plt.show()
plt.ion()
  • Ejecución:

Ultima entrada ingresada

SISTEMA DE RIEGO AUTOMÁTICO CON MÚSICA

El objetivo era hacer un programa que pueda activar una bomba de agua en la noche, y que por las mañanas reproduzca música para las plantas....