miércoles, 25 de diciembre de 2019

12 mBot. Sensor de iluminacion

Detectar si una habitacion esta iluminada o no usando los sensores de #mBot


domingo, 8 de diciembre de 2019

10 mBot. Pulsacion boton

Programando #mBot para detectar si se ha pulsado el boton de la placa y ejecutar las ordenes indicadas para dicho caso.


viernes, 6 de diciembre de 2019

97 Python. Agenda contactos

Crea una agenda de contactos con Python.
Incluimos menu de opciones y grabaremos los datos en archivo csv.
Usaremos clases, funciones, metodos, archivos.


El codigo utilizado es el siguiente:
# -*-coding:utf-8 -*-

"""
Created on Fri Dic 06 07:48:08 2019

@author: Jose
"""

#modulos
import csv
import itertools
import re

#clases
class Contacto:
    nuevoId=itertools.count()
    def __init__(self,nombre,apellidos,empresa,fijo,movil):
        self.codigo=next(self.nuevoId)
        self.nombre=nombre
        self.apellidos=apellidos
        self.empresa=empresa
        self.fijo=fijo
        self.movil=movil
class Agenda:
    def __init__(self):
        self.contactos=[]
    def ordenarNombre(self):
        self.contactos.sort(key=lambda contacto: contacto.nombre)
    def ordenarApellidos(self):
        self.contactos.sort(key=lambda contacto: contacto.apellidos)
    def añadir(self,nombre,apellidos,empresa,fijo,movil):
        contacto=Contacto(nombre,apellidos,empresa,fijo,movil)
        self.contactos.append(contacto)
    def mostrarTodos(self):
        self.submenuOrden()
        for contacto in self.contactos:
            self.imprimeContacto(contacto)
    def buscar(self,textoBuscar):
        encontrado=0
        for contacto in self.contactos:
            if(re.findall(textoBuscar,contacto.nombre)) or (re.findall(textoBuscar,contacto.apellidos)):
                self.imprimeContacto(contacto)
                encontrado=encontrado+1
                self.submenuBuscar(contacto.codigo)
        if encontrado==0:
            self.noEncontrado()
    def borrar(self,codigo):
        for contacto in self.contactos:
            if contacto.codigo==codigo:
                print('---*---*---*---*---*---*---*---*')
                print('Quieres borrarlo? (s/n)')
                print('---*---*---*---*---*---*---*---*')
                opcion=str(input(""))
                if opcion=='s' or opcion=='S':
                    print('Borrando contacto!!!')
                    del self.contactos[codigo]
                elif opcion=='n' or opcion=='N':
                    break
    def modificar(self,codigo):
        for contacto in self.contactos:
            if contacto.codigo==codigo:
                del self.contactos[codigo]
                nombre=str(input('Escribe el nombre: '))
                apellidos=str(input('Escribe los apellidos: '))
                empresa=str(input('Escribe la empresa: '))
                fijo=str(input('Escribe el fijo: '))
                movil=str(input('Escribe el movil: '))
                contacto=Contacto(nombre.capitalize(),apellidos.capitalize(),empresa.capitalize(),fijo,movil)
                self.contactos.append(contacto)
                break
    def submenuBuscar(self,codigo):
        print('---*---*---*---*---*---*---*---*')
        print('Quieres (m)odificarlo o (b)orrarlo? ')
        print('---*---*---*---*---*---*---*---*')
        opcion=str(input(""))
        if opcion=='m' or opcion=='M':
            self.modificar(codigo)
        elif opcion=='b' or opcion=='B':
            self.borrar(codigo)
        else:
            print('Continuamos sin realizar modificacion alguna')
    def submenuOrden(self):
        print('---*---*---*---*---*---*---*---*')
        print('Quieres ordenar por (n)ombre o por (a)pellidos?')
        print('---*---*---*---*---*---*---*---*')
        opcion=str(input(""))
        if opcion=='n' or opcion=='N':
            self.ordenarNombre()
        elif opcion=='a' or opcion=='A':
            self.ordenarApellidos()

    def grabar(self):
        with open('agenda.csv','w') as fichero:
            escribir=csv.writer(fichero)
            escribir.writerow(('codigo','nombre','apellidos','empresa','fijo','movil'))
            for contacto in self.contactos:
                escribir.writerow((contacto.codigo,contacto.nombre,contacto.apellidos,contacto.empresa,contacto.fijo,contacto.movil))
    def imprimeContacto(self,contacto):
        print('---*---*---*---*---*---*---*---*')
        print('---*---*---*---*---*---*---*---*')
        print('Codigo: {}'.format(contacto.codigo))
        print('Nombre: {}'.format(contacto.nombre))
        print('Apellidos: {}'.format(contacto.apellidos))
        print('Empresa: {}'.format(contacto.empresa))
        print('Fijo: {}'.format(contacto.fijo))
        print('Movil: {}'.format(contacto.movil))        
        print('---*---*---*---*---*---*---*---*')
        print('---*---*---*---*---*---*---*---*')
    def noEncontrado(self):
        print('---*---*---*---*---*---*---*---*')
        print('---*---*---*---*---*---*---*---*')
        print('Contacto no encontrado')
        print('---*---*---*---*---*---*---*---*')
        print('---*---*---*---*---*---*---*---*')
def ejecutar():
    agenda=Agenda()
    try:
        with open('agenda.csv','r') as fichero:
            lector=csv.DictReader(fichero,delimiter=',')
            for fila in lector:
                agenda.añadir(fila['nombre'].capitalize(),fila['apellidos'].capitalize(),fila['empresa'].capitalize(),fila['fijo'].capitalize(),fila['movil'].capitalize())
    except:
        print('Error al abrir fichero o que no existe aun')
    while True:
        menu=str(input("""
        \nSelecciona una opcion\n
        1 Mostrar lista de contactos
        2 Buscar contacto
        3 Añadir contacto
        0 Salir \n\n               
        """))
        if menu=='1':
            agenda.mostrarTodos()
        elif menu=='2':
            texto=str(input('Escribe el texto a buscar en contactos: '))
            agenda.buscar(texto.capitalize())
            agenda.grabar()
        elif menu=='3':
            nombre=str(input('Escribe el nombre: '))
            apellidos=str(input('Escribe los apellidos: '))
            empresa=str(input('Escribe la empresa: '))
            fijo=str(input('Escribe el fijo: '))
            movil=str(input('Escribe el movil: ')) 
            agenda.añadir(nombre.capitalize(),apellidos.capitalize(),empresa.capitalize(),fijo,movil)
            agenda.grabar()
        elif menu=='0':
            print('Hasta pronto!!!')
            agenda.grabar()
            break
        else:
            print('Opcion no valida!!!')
if __name__=='__main__':
    ejecutar()
        

viernes, 23 de agosto de 2019

94 Python. Graficos con libreria pandas y matplotlib

Realizar graficos con los datos obtenidos de un dataframe usando la libreria pandas y matplotlib en python.


93 Python. Aplicacion Cajas, ampliacion

Como continuacion del video anterior de creacion de una aplicacion sencilla para guardar datos de las cajas, en el siguiente video se amplia dicha aplicacion, dotandola de una consulta a la base de datos para obtener las ventas entre dos fechas indicadas.


lunes, 19 de agosto de 2019

92 Python. Aplicacion Caja diaria

Ejemplo de aplicacion creada con Python, para generar los datos que usaremos para crear los asientos contables requeridos de ventas sobre las cajas diarias.
Es una aplicacion con interfaz grafica en la que se introducen los datos de efectivo y tarjetas de dos tiendas y calcula la venta total, desglosa la base imponible y el iva, pasando seguidamente a guardar los datos en una base de datos sqlite y en un archivo de texto que imprimira inmediatamente.
Puedes ver el codigo completo en github.


09 mBot. SigueLineas parte 02

En el siguiente video amplio el codigo sobre la version siguelineas de video anterior.
Se añade al codigo sonido e iluminacion de leds segun el sensor que indique la salida de la linea.



miércoles, 7 de agosto de 2019

06 Scratch3. Bloques

Serie de videos con introduccion a los tipos bloques incluidos en la nueva version de Scratch, antes de empezar con la programacion en si.

Movimiento / Apariencia

Sonido / Eventos

Control / Sensores

Operadores


Variables

Funcion o metodo


sábado, 3 de agosto de 2019

91 Python. Pandas CSV

Obtener datos de un fichero csv usando la libreria pandas de python.




90 Python. Pandas

Introduccion a la libreria Pandas de Python, con la que manejaremos estructuras de datos que utilizaremos para analisis.


import pandas as pd
columnas=['Nombre','Edad','Codigo']

indice01=['Jose','Lucia','Mar']

indice02=['Juan','Eva','Maria']

datos01=pd.DataFrame([['Jose',47,1273],['Lucia',40,2363],['Mar',44,2834]],index=indice01,columns=columnas)

datos02=pd.DataFrame([['Juan',57,1273],['Eva',None,2363],['Maria',24,2834]],index=indice02,columns=columnas)

print(datos01)

print(datos02)

datos=pd.concat([datos01,datos02])

print(datos)

datos=datos.drop('Nombre',axis=1)

print(datos)

print(datos.index)print(datos.columns)

print(datos.head(2))

print(datos.tail(2))

print(datos.describe())

print(datos.info())

print(datos.isna())

print(datos['Edad'])

print(datos01.drop('Codigo',axis=1))

print(datos01.drop('Nombre',axis=1))

print(datos01.head())

domingo, 14 de julio de 2019

89 Python. Numpy

En el siguiente video puedes ver una pequeña introduccion a la libreria Numpy de Python.
Facilita muchisimo las operaciones con vectores o matrices.




Ejemplos de codigo:
import numpy as np 
lista=[1,2,4,5,3,8,72,32,9,2,7] 
a=np.array(lista)
multiplicado=a*5 
print(help(np.zeros)) 
b=np.arange(20).reshape(4,5) 
print(b.shape) 
print(b.ndim) 
print(b.size) 
print(len(b)) 
indices=[0,2,3] 
print(a[indices]) 
ceros=np.zeros((4,5)) 
unos=np.ones((3,3)) 
unos=np.ones((4,5)) 
multiplica=ceros*unos 
print(a.sum()) 
print(a.mean()) 
print(a.min()) 
print(a.max()) 
print(a[1:3]) 
c=a[:] 
a=a*2 
c=a[:].copy() 
print(a) 
print(c)





sábado, 6 de julio de 2019

sábado, 29 de junio de 2019

86 Python. Portapapeles

En el siguiente video vemos como poder acceder al portapapeles del sistema mediante Python, con lo que podemos obtener datos y enviarlos.







domingo, 16 de junio de 2019

domingo, 9 de junio de 2019

sábado, 1 de junio de 2019

85 Python. Listas emulando pilas

Vamos a usar listas para emular pilas y usar el metodo LIFO (ultimo en entrar primero en salir) con ellas.

pila=[1,3,2,5,7]
print(pila)
#añadimos elemento a la pila
pila.append(7)
print(pila)
#quitamos 2 elementos
pila.pop()
pila.pop()
print(pila)

84 Python. Adivina numero

Ejemplo codigo adivina numero, usando random con python.


Codigo del ejemplo:
import random
intentos=0
print('Hola, como te llamas? ')
nombre=input()
numeroMaquina=random.randint(1,20)
print(nombre+', voy a pensar un numero entre 1 y 20')
for intentos in range(9):
    print('Intentalo : ')
    numeroUsuario=int(input())
    if numeroUsuario<numeroMaquina:
        print('Tu numero es mas bajo')
    if numeroUsuario>numeroMaquina:
        print('Tu numero es mayor')
    if numeroUsuario==numeroMaquina:
        break
if numeroUsuario==numeroMaquina:
    print('Acertastes!!!')
    intentos=str(intentos+1)
    print('En '+intentos+' veces')
if numeroUsuario!=numeroMaquina:
    numeroMaquina=str(numeroMaquina)
    print('El numero pensado era '+numeroMaquina)



83 Python. Cifrado Cesar

Codifica una cadena de textos mediante el metodo Cesar usando Python.


El codigo es:
desplazamiento=12
def codifica(texto):

    cifrado=""
    if texto==texto.upper():
        lista="A,B,C,D,E,F,G,H,I,J,K,L,M,N,Ñ,O,P,Q,R,S,T,U,V,W,X,Y,Z"
    else:
        lista="a,b,c,d,e,f,g,h,i,j,k,l,m,n,ñ,o,p,q,r,s,t,u,v,w,x,y,z"
    for car in texto:
        if car in lista:
            cifrado += lista[(lista.index(car)+desplazamiento%(len(lista)))]
        else:
            cifrado+=car
    print(cifrado)
    return cifrado
def descodifica(texto):
        descifrado=""
    if texto==texto.upper():
        lista="A,B,C,D,E,F,G,H,I,J,K,L,M,N,Ñ,O,P,Q,R,S,T,U,V,W,X,Y,Z"
    else:
        lista="a,b,c,d,e,f,g,h,i,j,k,l,m,n,ñ,o,p,q,r,s,t,u,v,w,x,y,z"
    for car in texto:
        if car in lista:
            descifrado += lista[(lista.index(car)-desplazamiento%(len(lista)))]
        else:
            descifrado+=car
    print(descifrado)
    return descifrado
if __name__=="__main__":
    cifrado=codifica('hola')
    descifrado=descodifica(cifrado)



lunes, 27 de mayo de 2019

82 Python. Cuanto tarda una operacion Python?

Veamos un codigo que nos muestre cuanto tarda nuestro ordenador en realizar un bucle.

import time
inicio = time.time()
for x in range(1000):
    print(x)
fin=time.time()
print("Ha tardado en realizar el bucle -> ",fin-inicio)


81 Python. Condicional if

Veamos un ejemplo de dos formas de preparar un condicional "if" con python, el "clasico" y en una linea.

num = int(input("Dame un numero"))
#habitual if
if num%2==0:
    print("Es par")
else:
    print("Es impar")
#en una linea
print("Es par") if num%2==0 else print("Es impar")




sábado, 25 de mayo de 2019

80 Python. WebScraping

Iniciacion a webscraping, obteniendo datos de una web usando Python.
Puedes acceder a la web de pruebas en este enlace.
Es aconsejable tener una base de html, puedes consultar una introduccion aqui




El codigo python disponible en github.


from urllib.request import urlopen
from urllib.error import HTTPError
from urllib.error import URLError
from bs4 import BeautifulSoup

try: 
    html = urlopen("http://ticoticotaa.es/ejemplowebscraping.php")
except HTTPError as e:
    print(e)
except URLError:
    print("Servidor caido o dominio incorrecto")
else:
    resultado = BeautifulSoup(html.read(),"html5lib")
    #print(resultado.title)
    articulo = resultado.findAll("div",{"class":["articulo"]})
    #print(articulo)
    descripcion=resultado.findAll("div",{"class":["descripcion"]})
    precio=resultado.findAll("div",{"class":["precio"]})
    descripcionLista=[]
    precioLista=[]
    for desc in descripcion:
        descripcionLista.append(desc.getText().strip())
    print(descripcionLista)
    for prec in precio:
        precioLista.append(prec.getText().strip())
    print(precioLista)
    for i in range(len(descripcionLista)):
        if int(precioLista[i])<150:
            print(descripcionLista[i]+' : '+precioLista[i]+' €')
            print(' *** esta por debajo de 150 € *** ')
        else:
            print(descripcionLista[i]+' : '+precioLista[i]+' €')