Publicado el Deja un comentario

55 Python. Lambda

En este ejemplo vemos como obtener los numeros impares de una lista usando filter y lambda, con lambda indicamos la condicion para que devuelva los numeros cuyo modulo al dividir por 2 sea diferente a 0 y lo asignamos a impares para imprimirlos despues.

#filtrado con lambda

num=[2,5,6,8,9,2,23,43,44,56,32]

#devolvemos impares

impares=list(filter(lambda num:num%2!=0,num))

print(impares)

Please follow and like us:
Publicado el Deja un comentario

54 Python. Excepciones

Creamos una funcion a la que le pasamos 2 parametros, dentro de ella calculamos la division para imprimir su resultado, teniendo en cuenta los posibles errores al dividir por 0 o si introducimos texto en vez de numero.

Se llama a la funcion con distintos parametros para comprobar los errores que puedan suceder.

def divide(num1,num2):
    try:
        print(‘resultado’)
        print(num1/num2)
    except ZeroDivisionError:
        print(‘No se puede dividir por 0’)
    except Exception as e:
        print(‘error:’)
        print(type(e).__name__)
divide(9,0)
divide(6,’dfg#’)
divide(4,2)

Please follow and like us:
Publicado el Deja un comentario

50 Python. Llamada a funcion con parametros indeterminados

Podemos crear funciones en las que desconocemos cuantos parametros se van a recibir, por ejemplo una funcion que sume los numeros que se le pasen, independientemente si son 2 o 100.
Podriamos realizarlo de la siguiente forma:

#Numero indeterminado de parametros, Suma

def suma(*args):   

    suma=0   

    for arg in args:       

        suma+=arg   

    return suma

#llamamos 2 veces con distintos parametros

print(suma(2,9))

print(suma(2,3,5,4,1,8,9,7))

En la funcion recibimos los parametros con *args, dentro de la funcion los recorremos mediante bucle for y realizamos las operaciones necesarias, devolviendo el valor indicado en la funcion.

Please follow and like us:
Publicado el Deja un comentario

51 Python. Funciones recursivas

Una funcion se dice que es recursiva cuando dentro de la funcion se vuelve a llamar a si misma, segun las condiciones indicadas en el codigo.
Una funcion recursiva debe siempre tener una condicion de parada o salida para que la llamada a si misma no genere un bucle infinito, tiene que llegar un momento donde dicha funcion deje de llamarse y pare su ejecucion obteniendo el resultado esperado.
Normalmente el ejemplo tipico para mostrar esto es el factorial de un numero, pero puede generar mas confusion, por lo que el ejemplo que pongo aqui es una cuenta atras.
Creamos la funcion cuentaAtras donde se ira comprobando si hemos llegado a 0, en caso negativo se vuelve a llamar a la funcion cuentaAtras pero con el parametro anterior – 1, se vuelve a comprobar la condicion, en caso de que el numero ya sea inferior a 1 pararemos su llamada.

Observa el codigo:

#cuenta atras, funcion recursiva

def cuentaAtras(num):   

    if num>0:       

        print(num)       

        num-=1       

        cuentaAtras(num)   

    else:       

        print(“Se acabo la cuenta atras “)

cuentaAtras(10)

Please follow and like us:
Publicado el Deja un comentario

49 Python. Funcion con parametros

Creamos un script que nos muestre la tabla de multiplicar de un numero dado, observa el siguiente codigo:

#funcion con parametro, tablas de multiplicar

def tabla(num):   

    for i in range(1,11):       

    print(“{} * {} = {}”.format(num,i,num*i)

tabla(2)

tabla(8)

Hemos definido una funcion a la que le pasamos un numero como parametro en la llamada a la funcion, tal y como aparece al final del codigo, dentro del cuerpo de la funcion, iniciamos un bucle, en este caso abarca desde el 1 al 10 (11-1) ya que el ultimo no esta incluido.
Dentro del bucle mostramos el valor de la multiplicacion, para ello usamos el metodo format con print, donde estan las llaves se usaran las variables num, i y num*i, en el mismo orden de aparicion.
Llamamos a la funcion dos veces con dos parametros distintos, para ver el resultado.

Please follow and like us:
Publicado el Deja un comentario

Funciones y formato condicional con OpenOffice Calc

Vamos a usar las funciones de OpenOffice Calc para obtener sumas, medias, valor maximo y minimo de un intervalo de datos.
Una
vez obtenido el resultado requerido, vamos a establecer un formato
condicional a los datos de la tabla, para conseguir visualizar
facilmente los datos que estan por encima y por debajo de la media,
estableciendo un color de fondo.

Please follow and like us:
Publicado el Deja un comentario

05 JavaScript. Contador de tiempo

Creamos un contador de tiempo para nuestra web, para ello usamos HTML, CSS y JavaScript.

El codigo es:

HTML

<!DOCTYPE html>
<html>
<head>
<link href=”css/estilo.css” rel=”stylesheet” type=”text/css”>
<title>
Contador
</title></head>
<body>
<section>
<div id=”contenido”>
<article>
<div id=”tiempo”>
<h5 id=”titulo”>
<span>Horas</span>
<span>Minutos</span>
<span>Segundos</span>
</h5>
<h2 id=”contador”>
<span id=”horas”>00</span>
<span id=”minutos”>00</span>
<span id=”segundos”>00</span>
</h2>
</div>
</article>
</div></section>
<script src=”js/tiempo.js”></script>
</body></html>

CSS

 body{
margin:0 auto;
max-width:98%;
font-family: Helvetica, Arial;
font-size:14px;

}
#titulo{
font-size:1.3em;
text-align:center;
margin-top:5em;
padding:1.3em;
color:#434343;
}
#contador{
font-size:2.2em;
text-align:center;
color:#434343;
}

JavaScript

 var horas,minutos,segundos;
horas=0;
minutos=0;
segundos=0;
hor=document.getElementById(“horas”);
min=document.getElementById(“minutos”);
seg=document.getElementById(“segundos”);
function tiempo(){
var contador=0;
window.setInterval(function(){
if(contador<10){
seg.innerHTML=”0″+contador;
}else{
seg.innerHTML= contador;
}
if(contador>59){
segundos=0;
contador=0;
minutos=minutos+1;
}
if(minutos>59){
minutos=0;
horas=horas+1;
}
if(horas>23){
horas=0;

}
if(minutos<10){
min.innerHTML=”0″+minutos;
}else{
min.innerHTML=minutos;
}
if(horas<10){
hor.innerHTML=”0″+horas;
}else{
hor.innerHTML=horas;
}
contador++;
},1000);
}
tiempo();

Please follow and like us:
Publicado el Deja un comentario

33 Python. Agenda de contactos parte 4 Modificar Datos

Añadimos funcion para modificar los registros de nuestra base de datos.





BDatos

#SQLITE
import sqlite3
#CREA TABLA
def creaTabla():
conexion=sqlite3.connect(“agenda.db”)
consulta=conexion.cursor()
sql=”””CREATE TABLE IF NOT EXISTS agenda(id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
nombre VARCHAR(20) NOT NULL, apellidos VARCHAR(20) NOT NULL, telefono VARCHAR(14) NOT NULL,
email VARCHAR(20) NOT NULL)”””
if(consulta.execute(sql)):
print(“Tabla creada”)
else:
print(“No se pudo crear la tabla”)
conexion.close()
#INSERTAR DATOS
def inserta(nombre,apellidos,telefono,email):
conexion=sqlite3.connect(“agenda.db”)
consulta=conexion.cursor()
datos=(nombre,apellidos,telefono,email)
sql=”””INSERT INTO agenda(nombre,apellidos,telefono,email) VALUES (?,?,?,?)”””
if(consulta.execute(sql,datos)):
print(“Datos guardados”)
else:
print(“No se pudo guardar el dato”)
conexion.commit()
conexion.close()
def modifica(id,nombre,apellidos,telefono,email):
conexion=sqlite3.connect(“agenda.db”)
consulta=conexion.cursor()
consulta.execute(“””UPDATE agenda SET nombre = ?,apellidos = ?,
telefono = ?,email = ? WHERE id= ?”””,(nombre,apellidos,telefono,email, str(id)))
consulta.close()
conexion.commit()
conexion.close()



Agenda

#AGENDA PYTHON
#CON SQLITE
#IMPORTA MODULO
from tkinter import *
from BDatos import *
from tkinter import messagebox
#VARIABLES
listado=[]
ANCHO=560
ALTO=540
POSX=400
POSY=400
anchoAlto=(str(ANCHO)+”x”+str(ALTO))
posicionX=”+”+str(POSX)
posicionY=”+”+str(POSY)
colorVentana=”blue”
colorFondo=”blue”
colorLetra=”white”
#funcion pruebas
def mostrarMensaje():
print(“Pruebas”)
#FUNCIONES
def mensaje(titulo,texto):
messagebox.showinfo(titulo,texto)
def listar():
if(len(listado)>0):
#borra lista
listado.clear()
conexion=sqlite3.connect(“agenda.db”)
consulta=conexion.cursor()
consulta.execute(“SELECT id,nombre,apellidos,telefono,email from agenda”)
for i in consulta:
id=(i[0])
nombre=(i[1])
apellidos=(i[2])
telefono=(i[3])
email=(i[4])
listado.append(i)
listado.sort()
conexion.close()
try:
textLista.delete(1.0,END)
except:
mensaje(“Listado”,”error en listado”)
textLista.insert(INSERT,”idtNombrettApellidosttTelefonon”)
for elemento in listado:
id=elemento[0]
nombre=elemento[1]
apellidos=elemento[2]
telefono=elemento[3]
textLista.insert(INSERT,id)
textLista.insert(INSERT,”t”)
textLista.insert(INSERT,nombre)
textLista.insert(INSERT,”t”)
textLista.insert(INSERT,”t”)
textLista.insert(INSERT,apellidos)
textLista.insert(INSERT,”t”)
textLista.insert(INSERT,”t”)
textLista.insert(INSERT,telefono)
textLista.insert(INSERT,”t”)
textLista.insert(INSERT,”n”)

def limpiar():
ID.set(“”)
nombre.set(“”)
apellidos.set(“”)
telefono.set(“”)
email.set(“”)
def guardar():
no=nombre.get()
ap=apellidos.get()
tf=telefono.get()
em=email.get()
if((no==””)or(ap==””)):
mensaje(“Guardar”,”Faltan datos”)
else:
limpiar()
creaTabla()
inserta(no,ap,tf,em)
mensaje(“Guardar”,”Datos guardados”)
listar()
def modificar():
id=ID.get()
no=nombre.get()
ap=apellidos.get()
tf=telefono.get()
em=email.get()
if((no==””)or(ap==””)or(id==””)):
mensaje(“Modificar”,”Faltan datos”)
else:
try:
limpiar()
modifica(id,no,ap,tf,em)
mensaje(“Modificar”,”Contacto modificado”)
listar()
except:
mensaje(“Modificar”,”Error al modificar”)
#VENTANA
ventana=Tk()
ventana.config(bg=colorVentana)
ventana.geometry(anchoAlto+posicionX+posicionY)
ventana.title(“Agenda”)
#Variables cajas
ID=IntVar()
nombre=StringVar()
apellidos=StringVar()
telefono=StringVar()
email=StringVar()
#Widgets
etiquetaID=Label(ventana,text=”ID:”).place(x=50,y=50)
cajaID=Entry(ventana,textvariable=ID).place(x=130,y=50)
etiquetaNombre=Label(ventana,text=”Nombre:”).place(x=50,y=90)
cajaNombre=Entry(ventana,textvariable=nombre).place(x=130,y=90)
etiquetaApellidos=Label(ventana,text=”Apellidos:”).place(x=50,y=130)
cajaApellidos=Entry(ventana,textvariable=apellidos).place(x=130,y=130)
etiquetaTelefono=Label(ventana,text=”Telefono:”).place(x=50,y=170)
cajaTelefono=Entry(ventana,textvariable=telefono).place(x=130,y=170)
etiquetaEmail=Label(ventana,text=”Email:”).place(x=50,y=210)
cajaEmail=Entry(ventana,textvariable=email).place(x=130,y=210)
textLista=Text(ventana)
textLista.place(x=50,y=240,width=400,height=200)
#Botones
botonAñadir=Button(ventana,text=”Añadir”,command=guardar).place(x=150,y=500)
botonBorrar=Button(ventana,text=”Borrar”,command=mostrarMensaje).place(x=200,y=500)
botonBuscar=Button(ventana,text=”Buscar”,command=mostrarMensaje).place(x=250,y=500)
botonModificar=Button(ventana,text=”Modificar”,command=modificar).place(x=300,y=500)

ventana.mainloop()

 

Please follow and like us:
Publicado el Deja un comentario

32 Python. Agenda de contactos parte 3

En esta entrada preparo nuestra aplicacion para listar los registros grabados en la base de datos Sqlite, tambien creamos una funcion para mostrar mensajes.

Agenda

#AGENDA PYTHON
#CON SQLITE
#IMPORTA MODULO
from tkinter import *
from BDatos import *
from tkinter import messagebox
#VARIABLES
listado=[]
ANCHO=560
ALTO=540
POSX=400
POSY=400
anchoAlto=(str(ANCHO)+”x”+str(ALTO))
posicionX=”+”+str(POSX)
posicionY=”+”+str(POSY)
colorVentana=”blue”
colorFondo=”blue”
colorLetra=”white”
#funcion pruebas
def mostrarMensaje():
print(“Pruebas”)
#FUNCIONES
def mensaje(titulo,texto):
messagebox.showinfo(titulo,texto)
def listar():
if(len(listado)>0):
#borra lista
listado.clear()
conexion=sqlite3.connect(“agenda.db”)
consulta=conexion.cursor()
consulta.execute(“SELECT id,nombre,apellidos,telefono,email from agenda”)
for i in consulta:
id=(i[0])
nombre=(i[1])
apellidos=(i[2])
telefono=(i[3])
email=(i[4])
listado.append(i)
listado.sort()
conexion.close()
try:
textLista.delete(1.0,END)
except:
mensaje(“Listado”,”error en listado”)
textLista.insert(INSERT,”idtNombrettApellidosttTelefonon”)
for elemento in listado:
id=elemento[0]
nombre=elemento[1]
apellidos=elemento[2]
telefono=elemento[3]
textLista.insert(INSERT,id)
textLista.insert(INSERT,”t”)
textLista.insert(INSERT,nombre)
textLista.insert(INSERT,”t”)
textLista.insert(INSERT,”t”)
textLista.insert(INSERT,apellidos)
textLista.insert(INSERT,”t”)
textLista.insert(INSERT,”t”)
textLista.insert(INSERT,telefono)
textLista.insert(INSERT,”t”)
textLista.insert(INSERT,”n”)

def limpiar():
ID.set(“”)
nombre.set(“”)
apellidos.set(“”)
telefono.set(“”)
email.set(“”)
def guardar():
no=nombre.get()
ap=apellidos.get()
tf=telefono.get()
em=email.get()
if((no==””)or(ap==””)):
mensaje(“Guardar”,”Faltan datos”)
else:
limpiar()
creaTabla()
inserta(no,ap,tf,em)
mensaje(“Guardar”,”Datos guardados”)
listar()
#VENTANA
ventana=Tk()
ventana.config(bg=colorVentana)
ventana.geometry(anchoAlto+posicionX+posicionY)
ventana.title(“Agenda”)
#Variables cajas
ID=IntVar()
nombre=StringVar()
apellidos=StringVar()
telefono=StringVar()
email=StringVar()
#Widgets
etiquetaID=Label(ventana,text=”ID:”).place(x=50,y=50)
cajaID=Entry(ventana,textvariable=ID).place(x=130,y=50)
etiquetaNombre=Label(ventana,text=”Nombre:”).place(x=50,y=90)
cajaNombre=Entry(ventana,textvariable=nombre).place(x=130,y=90)
etiquetaApellidos=Label(ventana,text=”Apellidos:”).place(x=50,y=130)
cajaApellidos=Entry(ventana,textvariable=apellidos).place(x=130,y=130)
etiquetaTelefono=Label(ventana,text=”Telefono:”).place(x=50,y=170)
cajaTelefono=Entry(ventana,textvariable=telefono).place(x=130,y=170)
etiquetaEmail=Label(ventana,text=”Email:”).place(x=50,y=210)
cajaEmail=Entry(ventana,textvariable=email).place(x=130,y=210)
textLista=Text(ventana)
textLista.place(x=50,y=240,width=400,height=200)
#Botones
botonAñadir=Button(ventana,text=”Añadir”,command=guardar).place(x=150,y=500)
botonBorrar=Button(ventana,text=”Borrar”,command=mostrarMensaje).place(x=200,y=500)
botonBuscar=Button(ventana,text=”Buscar”,command=mostrarMensaje).place(x=250,y=500)
botonModificar=Button(ventana,text=”Modificar”,command=mostrarMensaje).place(x=300,y=500)

ventana.mainloop()

BDdatos

#SQLITE
import sqlite3
#CREA TABLA
def creaTabla():
conexion=sqlite3.connect(“agenda.db”)
consulta=conexion.cursor()
sql=”””CREATE TABLE IF NOT EXISTS agenda(id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
nombre VARCHAR(20) NOT NULL, apellidos VARCHAR(20) NOT NULL, telefono VARCHAR(14) NOT NULL,
email VARCHAR(20) NOT NULL)”””
if(consulta.execute(sql)):
print(“Tabla creada”)
else:
print(“No se pudo crear la tabla”)
conexion.close()
#INSERTAR DATOS
def inserta(nombre,apellidos,telefono,email):
conexion=sqlite3.connect(“agenda.db”)
consulta=conexion.cursor()
datos=(nombre,apellidos,telefono,email)
sql=”””INSERT INTO agenda(nombre,apellidos,telefono,email) VALUES (?,?,?,?)”””
if(consulta.execute(sql,datos)):
print(“Datos guardados”)
else:
print(“No se pudo guardar el dato”)
conexion.commit()
conexion.close()

 

Please follow and like us: