Publicado el Deja un comentario

Python. Agenda de contactos

Crea una agenda de contactos y guardalos en un archivo csv que podras abrir con editor de textos o excel.
Para crear la agenda usaremos clases, funciones, metodos, etc.

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()

Please follow and like us:
Publicado el Deja un comentario

17 Html, Css. Divs y clases

Desde CSS hemos cambiado las propiedades a etiquetas de HTML, con claves y divs podemos tambien cambiar propiedades.

HTML<!DOCTYPE html><html lang=”es”><head><title>Web principal</title><meta charset=”utf-8″><meta name=”viewport” content=”width=device-width,initial-scale=1.0″><link rel=”stylesheet” href=”estilos.css”/><link href=”https://fonts.googleapis.com/css?family=Playfair+Display|Quicksand” rel=”stylesheet”></head><body><!–Cabecera–><header><h1>Cabecera de mi web</h1><figure><img src=”milogo.jpg”/></figure></header> <!–Barra navegacion–><nav><ul><li><a href=”index.html”>Inicio</a></li><li><a href=”contacto.html”>Contacto</a></li><li><a href=”acercade.html”>Acerca de</a></li></ul></nav><!–Contenido principal–><section><article><hgroup><h2>Titulo del Parrafo</h2></hgroup><p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu.  In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum  felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum  semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu,  consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis,  feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum.  Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi.  Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar,  hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero  venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo.  Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc,</p></article><article><hgroup><h2>Titulo del Parrafo</h2></hgroup><p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu.  In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum  felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum  semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu,  consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis,  feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum.  Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi.  Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar,  hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero  venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo.  Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc,</p></article><article><hgroup><h2>Titulo del Parrafo</h2></hgroup><p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu.  In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum  felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum  semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu,  consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis,  feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum.  Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi.  Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar,  hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero  venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo.  Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc,</p></article></section><!–Complemento lateral–><aside><h3>Siguenos en: </h3><ul><li><a href=”#” class=”enlace”>Facebook</a></li><li><a href=”#” class=”enlace”>Twitter</a></li></ul></aside><!–Pie de pagina–><footer><p>Jose Ojeda 2019&copy</p><div id=”email”><p>email: nombre@email.com</p></div></footer></body></html>
CSS*{ margin:0 auto; padding:0px; /*font-family: ‘Playfair Display’, serif;*/ font-family: ‘Quicksand’, sans-serif;}header{ background:#FF5733; color:#FFFFFF; font-size:3em; width:95%; padding:10px; margin:5px 5px; display:inline-block; border:solid 1px #ccc; border-radius:25px;}header figure{ float:left;}header h1{ float:right;}nav{ font-size:1em; width:95%; padding:5px; margin:1px 1px; text-align:center;}nav ul{ list-style-type:none;}nav li{ display:inline; text-align:center; margin:0 15px 0 0;}nav li a{ padding:2px 7px 2px 7px; color:#FF5733; background-color:#FFFFFF; border:1px solid #ccc; text-decoration:none;}nav li a:hover{ background:#FF5733; color:#FFFFFF;}section{ width:70%; margin-left:15px; margin-top:25px; padding:10px; border:1px solid #ccc; float:left; background:#E6E6E6; color:#000000; border-radius:25px;}section h2{ color:#FF5733; font-size:1.5em;}section p{ font-size:1em;}aside{ width:20%; margin-left:15px; margin-top:25px; padding:10px; border:1px solid #ccc; float:left; background:#E6E6E6; color:#000000; border-radius:25px; font-size:1em;}aside a{ text-decoration:none;}aside a:hover{ color:#000000;}aside ul{ list-style-type:none;}footer{ width:95%; clear:both; margin-left:15px; margin-top:25px; padding:10px; border:1px solid #ccc; background:#FF5733; color:#FFFFFF; font-size:0.5em; border-radius:25px;}#email{ margin-left:65px; font-size:1.5em; color:yellow;}.enlace{ color:green; font-size:1em;}.enlace:hover{ color:blue; font-size:2em;}@media screen and (max-width:480px){ header{ font-size:1em; width:95%; padding:2px; margin:2px 2px; display:inline-block; border:solid 1px #ccc; border-radius:15px; } section p{ font-size:0.8em; color:red;}}

Please follow and like us:
Publicado el Deja un comentario

13 Python. Clases y Herencia

Creamos clases con atributos y metodos que nos sirven como plantillas o moldes para crear objetos (POO programacion orientada a objetos).
Vemos tambien como realizar clases que hereden de clases padres.
Puedes consultar los codigos de ejemplo aqui.

#CLASE COCHE Y METODOS
class coche:
    #CONSTRUCTOR DE LA CLASE
    def __init__(self,color,puertas):
        self.color=color
        self.puertas=puertas
    #METODO DE LA CLASE
    def arranca(self):
        print(“Arrancando!!!”)
miCoche1=coche(“rojo”,5)
print(miCoche1.color)
print(miCoche1.puertas)
miCoche1.arranca()
miCoche2=coche(“verde”,3)
print(miCoche2.color)
print(miCoche2.puertas)
miCoche2.arranca()

 #CLASE PADRE
class animal:
    def __init__(self,nombre,color):
        self.nombre=nombre
        self.color=color
#CLASE QUE HEREDA
class gato(animal):
    def maulla(self):
        print (“miau!!!”)
#CREAMOS OBJETO DE CLASE GATO
tobby=gato(“Tobby”,”marron”)
print(tobby.color)
print(tobby.nombre)
tobby.maulla()

Please follow and like us:
Publicado el Deja un comentario

13 Java. Clases, ejemplo practico

Como ejemplo practico de instanciar un objeto de una clase creada por nosotros, podriamos ver como simular la programacion de un cajero bancario, en el que podremos crear cuentas y operar con ellas, mostrando el saldo al requerirlo.
La clase principal seria asi:


public class principal {

    public static void main(String[] args) {
        cuentaBancaria cuenta1=new cuentaBancaria(500);
        cuentaBancaria cuenta2=new cuentaBancaria();
        System.out.println(“El saldo de la cuenta 1 es “+cuenta1.dameSaldo());
        System.out.println(“El saldo de la cuenta 2 es “+cuenta2.dameSaldo());
        cuenta1.retira(25);
        cuenta2.ingresa(249.23);       
        System.out.println(“El saldo modificado de la cuenta 1 es “+cuenta1.dameSaldo());
        System.out.println(“El saldo modificado de la cuenta 2 es “+cuenta2.dameSaldo());
       
    }

}

La clase cuentaBancaria seria:

public class cuentaBancaria {
    private double cantidad;
    private double saldo;
    cuentaBancaria(){
        saldo=0;
    }
    public double dameSaldo() {
        return saldo;
    }

    cuentaBancaria(double cantidad){
        saldo=cantidad;
    }
    void ingresa(double cantidad){
        saldo=saldo+cantidad;
    }
    void retira(double cantidad){
        saldo=saldo-cantidad;
    }
}

En esta clase se preparan los metodos que incrementan o disminuyen el saldo, asi como el metodo que devuelve el saldo que servira para mostrarlo por consola desde la clase principal
Ponemos en dicha clase dos constructores (sobrecarga), se tomara uno u otro dependiendo si al instanciarlo indicamos saldo inicial o no.
Desde la clase principal instanciamos dos cuentas y operamos con ellas.

Please follow and like us:
Publicado el Deja un comentario

02. CSS Divs y Clases

Desde CSS podremos llamar a etiquetas HTML, Divs y Clases, para dar formato a cualquier parte de nuestro documento HTML.

El codigo del archivo divyclases.HTML es:

<!doctype html>
<html lang=”ES”>
<head>
<link rel=”stylesheet” type=”text/css” href=”css/divyclases.css”>
<title>
Pruebas con div y clases
</title>
</head>
<body>
<header>
<nav>
</nav>
</header>
<section>
<article>
<hgroup>
<h1>Esto es el primer encabezado</h1>
</hgroup>
<p>Este es el primer parrafo para probar CSS</p>
<div id=”segundodiv”>
<p>Este es el segundo parrafo para probar CSS</p>
</div>
<p class=”terceraclase”>Este es el tercero parrafo para probar CSS</p>
<p>Este es el cuarto parrafo para probar CSS</p>
</article>
</section>
<aside>
</aside>
<footer>
</footer>
</body>
</html>

El codigo de la hoja de estilos divyclases.CSS es:


/*Comentario de CSS*/
/*selector universal*/
*{
    background-color:blue;
}
p{
    font-size:35px;
    color:green;
}
#segundodiv p{
    color:yellow;
    background-color:green;
}
.terceraclase{
    color:red;
    background-color:yellow;
    font-size:45px;
}

Para cualquier duda podeis contactar conmigo.
En el video uso el editor NOTEPAD++.
Espero os sea util y no olvideis practicar. Gracias.

Please follow and like us: