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

77 Python. Strings, operaciones con cadenas

Escribe el siguiente codigo y observa los resultados, son metodos que podemos aplicar a las cadenas de textos o strings.

print(‘hola’.capitalize())
print(‘hola’.center(10,’#’))
print(‘hola’.count(‘a’))
print(‘hola’.endswith(‘a’))
print(‘hola’.find(‘o’))
print(‘hola’.isalpha())
print(‘hola’.isdigit())
print(‘hola’.isupper())
print(‘,’.join(‘hola’))
print(‘hola’.replace(‘h’,’c’))
print(‘hola’.split())
print(‘hola’.upper())
print(‘hola’.zfill(6))

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

06 Android. Marcador Basket

Creamos una aplicacion en la que iremos reflejando el marcador del equipo local y visitante de un partido de baloncesto.

En el codigo podras ver que se me paso poner las variables de los marcadores a cero cuando se pulsa el boton de Reset, en el metodo borra debes añadir puntuacionLocal=0 y puntuacionVisitante=0.
En unos dias lanzare un video mejorando la estetica de esta aplicacion, en ese video añadire el codigo de borrado de variables.

MainActivity

package ticoticotaa.es.marcadorbaloncesto;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity 
implements View.OnClickListener {
    public TextView marcadorLocal, marcadorVisitante,titulo;
    public Button btn1Local,btn2Local,btn3Local,
btn1Visitante,btn2Visitante,btn3Visitante,btnReset;
    public int puntuacionLocal,puntuacionVisitante,puntos;
    @Override    protected void onCreate(Bundle 
savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        titulo=(TextView)findViewById(R.id.tvTitulo);
        titulo.setText("Marcador Basket");
        marcadorLocal=(TextView)findViewById
(R.id.tvMarcadorLocal);
        marcadorVisitante=(TextView)findViewById
(R.id.tvMarcadorVisitante);
        marcadorLocal.setText("Local: "+0);
        marcadorVisitante.setText("Visitante: "+0);
        btn1Local=(Button)findViewById(R.id.btnLocal1);
        btn2Local=(Button)findViewById(R.id.btnLocal2);
        btn3Local=(Button)findViewById(R.id.btnLocal3);
        btn1Visitante=(Button)findViewById(R.id.btnVisitante1);
        btn2Visitante=(Button)findViewById(R.id.btnVisitante2);
        btn3Visitante=(Button)findViewById(R.id.btnVisitante3);
        btnReset=(Button)findViewById(R.id.btnReset);
        btn1Local.setOnClickListener(this);
        btn2Local.setOnClickListener(this);
        btn3Local.setOnClickListener(this);
        btn1Visitante.setOnClickListener(this);
        btn2Visitante.setOnClickListener(this);
        btn3Visitante.setOnClickListener(this);
        btnReset.setOnClickListener(this);
    }

    @Override    public void onClick(View view) {
        switch (view.getId()){
            case R.id.btnLocal1:
                incrementa(1,1);
                break;
            case R.id.btnLocal2:
                incrementa(1,2);
                break;
            case R.id.btnLocal3:
                incrementa(1,3);
                break;
            case R.id.btnVisitante1:
                incrementa(2,1);
                break;
            case R.id.btnVisitante2:
                incrementa(2,2);
                break;
            case R.id.btnVisitante3:
                incrementa(2,3);
                break;
            case R.id.btnReset:
                borra();
                break;
        }
    }
    public void incrementa(int equipo, int puntos){
        if (equipo==1){
            puntuacionLocal=puntuacionLocal+puntos;
            marcadorLocal.setText("Local: "+puntuacionLocal);
        }else{
            puntuacionVisitante=puntuacionVisitante+puntos;
            marcadorVisitante.setText("Visitante: "
+puntuacionVisitante);
        }
    }
    public void borra(){
        marcadorLocal.setText("Local: "+0);
        marcadorVisitante.setText("Visitante: "+0);
    }
}

Activity_main xml

<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout
 xmlns:android="http://schemas.android.com/apk/res/android"  
  xmlns:app="http://schemas.android.com/apk/res-auto"  
  xmlns:tools="http://schemas.android.com/tools" 
   android:layout_width="match_parent"    android:layout_height="match_parent"   
 tools:context="ticoticotaa.es.marcadorbaloncesto.MainActivity">

    <LinearLayout      
  android:layout_width="match_parent"    
    android:layout_height="match_parent"     
   android:orientation="vertical">

        <TextView            android:id="@+id/tvTitulo"         
   style="@style/texto" />

        <LinearLayout           
 android:layout_width="match_parent"      
      android:layout_height="wrap_content"     
       android:gravity="center"       
     android:orientation="horizontal">

            <LinearLayout             
   android:layout_width="wrap_content"              
  android:layout_height="wrap_content"              
  android:orientation="vertical">

                <TextView               
     android:id="@+id/tvMarcadorLocal"          
          style="@style/texto" />

                <Button                 
   android:id="@+id/btnLocal2"                
    style="@style/boton"              
      android:text="@string/dosPuntos"/>

                <Button                 
   android:id="@+id/btnLocal3"             
       style="@style/boton"                
    android:text="@string/tresPuntos"                    />

                <Button                 
   android:id="@+id/btnLocal1"            
        style="@style/boton"              
      android:text="@string/unPunto"/>
            </LinearLayout>

            <LinearLayout             
   android:layout_width="wrap_content"            
    android:layout_height="wrap_content"          
      android:orientation="vertical">

                <TextView                
    android:id="@+id/tvMarcadorVisitante"          
          style="@style/texto" />

                <Button              
      android:id="@+id/btnVisitante2"                
    style="@style/boton"                 
   android:text="@string/dosPuntos"/>

                <Button                 
   android:id="@+id/btnVisitante3"         
           style="@style/boton"             
       android:text="@string/tresPuntos"/>

                <Button            
        android:id="@+id/btnVisitante1"       
             style="@style/boton"            
        android:text="@string/unPunto"/>
            </LinearLayout>
        </LinearLayout>

        <Button       
     android:id="@+id/btnReset"        
    style="@style/boton"       
     android:text="@string/reset"/>
    </LinearLayout>

</android.support.constraint.ConstraintLayout>

Styles

<resources>

    <!-- Base application theme. -->   
 <style name="AppTheme"
 parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->  
      <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">
@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
<style name="boton">
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_width">wrap_content</item>
    <item name="android:padding">10dp</item>
    <item name="android:layout_margin">10dp</item>
    <item name="android:background">
@color/colorPrimaryDark</item>
    <item name="android:layout_gravity">center</item>
    <item name="android:gravity">center</item>
    <item name="android:textColor">@color/colorAccent</item>
</style>
    <style name="texto">
        <item name="android:layout_height">wrap_content</item>
        <item name="android:layout_width">wrap_content</item>
        <item name="android:textSize">24sp</item>
        <item name="android:textColor">@color/colorAccent</item>
        <item name="android:gravity">center</item>
        <item name="android:textColor">@color/colorAccent</item>
    </style>
</resources>

Please follow and like us:
Publicado el Deja un comentario

11 Java. Objetos y clases

Como instanciar o crear objetos de clases, acceder a sus valores con “getters” y modificarlos con “setters”.

Clase principal

public class principal {

    public static void main(String[] args) {
        animal perro=new animal();
        System.out.println(“El color del perro es “+perro.getColor());
        System.out.println(“El tamaño del perro es “+perro.getTamaño());
        perro.setTamaño(“pequeño”);
        System.out.println(“Ahora el tamaño del perro es “+perro.getTamaño());
        animal perro2=new animal(“mediano”,”marron”);
        System.out.println(“El color del perro2 es “+perro2.getColor());
        System.out.println(“El tamaño del perro2 es “+perro2.getTamaño());
    }

}

Clase animal

public class animal {
    private String tamaño;
    private String color;
    animal(){
        tamaño=”grande”;
        color=”negro”;
    }
    animal(String tamaño,String color){
        this.tamaño=tamaño;
        this.color=color;
    }
    public String getTamaño() {
        return tamaño;
    }
    public void setTamaño(String tamaño) {
        this.tamaño = tamaño;
    }
    public String getColor() {
        return color;
    }
    public void setColor(String color) {
        this.color = color;
    }
   
}

Please follow and like us: