lunes, 20 de diciembre de 2021

Ejercicio variables con Python

Una empresa tiene 3 productos de distinto peso que manda a los clientes a traves de otra empresa de mensajeria, necesita un script que le indique que peso envia a cada cliente para indicarlo a la mensajeria.
Se debe solicitar al usuario la cantidad a enviar de cada producto, conociendo que el peso es el siguiente:
    Producto 1 pesa 1.5 kg
    Producto 2 pesa 1.7 kg
    Producto 3 pesa 2.1 kg



viernes, 10 de diciembre de 2021

Ejercicio listas con Python

 Solicitar una lista al usuario, ordenarla e indicar con otras listas los numeros pares e impares.




miércoles, 8 de diciembre de 2021

Sentencia "Switch" con Python

 En otros lenguajes disponemos de la sentencia Switch que en Python no esta, pero podemos emularla con diccionarios como puedes ver en el siguiente video.








martes, 7 de diciembre de 2021

Ejercicio de lista con Python

 Escribe una lista con numeros del 10 al 20, mostarla, despues modifica los valores que estan en la posicion 3,6,7 para que su valor sea el resultado de multiplicar el valor que tenia por 4, seguidamente mostrar la lista final.



sábado, 4 de diciembre de 2021

Ejercicio de clases con Python

Realizar un programa que conste de una clase llamada Alumno que tenga como 
atributos el nombre y la nota del alumno. 

Definir los métodos y atributos, para mostrar los datos y un mensaje con el resultado de la nota.








domingo, 5 de septiembre de 2021

martes, 31 de agosto de 2021

Clase Misil con Pygame

 Continuamos creando el juego de meteoritos con Pygame, en este video creamos la clase Misil que manejara los disparos realizados desde la nave.



domingo, 8 de agosto de 2021

domingo, 18 de julio de 2021

Ejerrcicio basico con datos y visualizacion grafica con Python

 



import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
datos = pd.read_csv("datos.csv")
datos.set_index('ID'inplace=True)
print("Inicio dataframe")
print(datos.head(5))
print("Final dataframe")
print(datos.tail(5))
print(datos.info())
print(datos.describe())
print(datos.columns)
print(datos.index)

datosAgrupados = datos.groupby('TIENDA').TOTAL.sum()
print(datosAgrupados.head(5))

plt.pie(datosAgrupados, labels=datosAgrupados.index)
plt.show()

Matplotlib

 Realiza graficas con Python, mediante la libreria Matplotlib.



import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

x = np.linspace(1150200)
y = x + x**2
# print(x)
# print(y)
plt.plot(x, y, 'blue')  # .hist area bar pie scatter box
plt.title('Mi grafica')
plt.xlabel('Valores x')
plt.ylabel('Valores y')
plt.show()
# subplots
plt.subplot(121)
plt.plot(x, y, 'g')
plt.subplot(122)
plt.plot(x, y, 'red')
plt.show()

sábado, 17 de julio de 2021

Pandas

 Libreria Pandas para analisis de datos con Python.



import pandas as pd
import numpy as np
# Series
etiquetas = ['a''b''c''d''e']
datos = np.arange(49)
serie = pd.Series(datosindex=etiquetas)
print(serie)
# acceder valor
print(serie['c'])
# datos distinto tipo
datos = ['Jose'49'Mar'46]
serie = pd.Series(datos)
print(serie)
# datos directos
serie = pd.Series([10005001200700], ['Emp01''Emp02''Emp03''Emp04'])
print(serie)
# operacion suma
serie1 = pd.Series([10005001200700], [
                   'Emp01''Emp02''Emp03''Emp04'])
print(serie1)
serie2 = pd.Series([105015002200900], [
                   'Emp01''Emp02''Emp03''Emp04'])
print(serie2)
serie3 = serie1 + serie2
print(serie3)

# dataframes
filas = ['tienda1''tienda2''tienda3''tienda4']
columnas = ['articulo1''articulo2''articulo3']
datos = [[np.nan100200], [np.nan100300],
         [300np.nan400], [400100500]]

dataframe = pd.DataFrame(datosindex=filascolumns=columnas)
print(dataframe)
# seleccion fila
print(dataframe.loc['tienda2'])
print(dataframe.loc[['tienda2''tienda3']])
# seleccion columna
print(dataframe['articulo3'])
# valor concreto
print(dataframe.loc['tienda2''articulo3'])
# nueva columna
dataframe['articulo4'] = 25
print(dataframe)
dataframe['total'] = dataframe['articulo1']+dataframe['articulo2'] + \
    dataframe['articulo3']+dataframe['articulo4']
print(dataframe)
# eliminar columna
#dataframe = dataframe.drop(['total'], axis=1)
print(dataframe.drop(['total'], axis=1inplace=True))
print(dataframe)
condicion = dataframe > 200
print(dataframe[condicion])
condicion = (dataframe['articulo1'] >= 200) | (dataframe['articulo2'] >= 100)
print(dataframe[condicion])
nuevaColumna = '1 2 3 4'.split()
dataframe['indices'] = nuevaColumna
print(dataframe)
dataframe = dataframe.set_index('indices')
print(dataframe)
#dataframe.dropna(axis=1, inplace=True)
#dataframe.fillna(value=90, inplace=True)
media = dataframe.mean()
print(f"La media es igual a {media}")
dataframe.fillna(value=mediainplace=True)
print(dataframe)
# union de dataframes
data1 = dataframe.copy()
data2 = dataframe.copy()
print(data1)
print(data2)
dataTotal = pd.concat([data1data2])
print(dataTotal)
print(dataTotal['articulo3'].unique())
print(dataTotal['articulo3'].value_counts())
dataTotal = dataTotal.apply(lambda xx*3)
print(dataTotal)
print(dataTotal.columns)
print(dataTotal.index)
print(dataTotal.sort_values(['articulo3']))
print(dataTotal.describe())

# dataTotal.to_csv('dataTotal.csv')
dataframe = pd.read_csv('dataTotal.csv'index_col=0)
print(dataframe)

domingo, 11 de julio de 2021

Aplicacion cifrado de textos con Python

En el siguiente video vemos como construir una aplicacion de cifrado descifrado de textos usando el metodo de cifrado Cesar, tambien usaremos la libreria pickle para guardar el dato.



sábado, 3 de julio de 2021

Numpy

Conceptos basicos para manejar la libreria Numpy con Python.


import numpy as np

lista1 = [1234563289]
array1 = np.array(lista1)
print(lista1)
print(type(array1))
print(array1)
lista2 = [[124], [253], [942]]
array2 = np.array(lista2)
print(array2)

# arrays generacion automatica
array = np.arange(2253)
print(array)
matrizCeros = np.zeros((45))
print(matrizCeros)
matrizUnos = np.ones((35))
print(matrizUnos)
# matriz de 40 elementos con valores del 2 al 6
matriz = np.linspace(2640)
print(matriz)
# matriz identidad
matrizIdentidad = np.eye(7)
print(matrizIdentidad)
# numeros aleatorios
matrizAleatoria = np.random.rand(34)
print(matrizAleatoria)
matrizAleatoriaNormal = np.random.randn(4)
print(matrizAleatoriaNormal)
matrizAleatoriaEnteros = np.random.randint(15120)
print(matrizAleatoriaEnteros)
# tamaños arrays
array = np.random.randint(120130)
print(array)
matriz = array.reshape(56)
print(matriz)
# max y min
array = np.random.randint(1901200)
print(array)
maximo = array.max()
print(f"El valor maximo es {maximo}")
print(array.argmax())
minimo = array.min()
print(f"El valor minimo es {minimo}")
print(array.argmin())
# mostrar elementos
array = np.arange(111)
print(array)
print(array[2])
print(array[5:])
print(array[:6])
# copia de array
array2 = array.copy()
print(array)
print(array2)
array2[4] = 9999
print(array)
print(array2)
# operaciones con la matriz
print(matriz)
print(matriz[0])  # primera fila
print(matriz[:2])
print(matriz[12])
print(matriz[:, 1])
print(matriz[:, :1])
print(matriz)
print(matriz+10)
print(matriz+matriz)
print(matriz*10)
print(matriz*matriz)
print(np.max(matriz))
condicion = matriz > 100
print(matriz)
print(condicion)
print(matriz[condicion])
# numeros impares
condicion = (matriz % 2 != 0)
print(matriz[condicion])

# ejercicio
lista = np.arange(541)
print("Mostrando lista dimension uno")
print(lista)
print("Mostrando lista dimension modificada a 3 * 12")
lista = lista.reshape(312)
print(lista)
print("Mostrando valor del indice 2,4")
print(lista[24])
# combinacion primitiva
arrayPrimitiva = np.random.randint(1506)
print(f"La combinacion ganadora de la primitiva sera {arrayPrimitiva}")

sábado, 26 de junio de 2021

Añade nueva funcionalidad a la agenda con Python

 Añadimos nueva funcion a la agenda para buscar un contacto por su identificador.


El codigo completo es el siguiente:
Script principal::
from tkinter import *
from tkinter import messagebox
from baseDatos import *
ANCHO = 560
ALTO = 540
POSX = 300
POSY = 400
anchoAlto = str(ANCHO)+"x"+str(ALTO)
posicionX = "+"+str(POSX)
posicionY = "+"+str(POSY)
colorVentana = "blue"
colorLetra = "white"


def mostrarMensaje(titulomensaje):
    messagebox.showinfo(titulomensaje)


def limpiarDatos():
    nombre.set("")
    apellidos.set("")
    telefono.set("")
    email.set("")
    ID.set(0)
    text.delete(1.0END)


def guardar():
    crearTabla()
    if((nombre.get() == ""or (apellidos.get() == "")):
        mostrarMensaje("Error""Debes rellenar los datos")
    else:
        datos = nombre.get(), apellidos.get(), telefono.get(), email.get()
        mostrarMensaje("Guardar""Contacto guardado")
        insertar(datos)
        limpiarDatos()
        mostrar()


def actualizar():
    crearTabla()
    if((ID.get() == ""or (ID.get() == 0or (nombre.get() == "")):
        mostrarMensaje("Error""Debes rellenar los datos")
    else:
        try:
            modificar(ID.get(), nombre.get(), apellidos.get(),
                      telefono.get(), email.get())
            mostrarMensaje("Modificar""Contacto modificado")
            limpiarDatos()
            mostrar()
        except:
            mostrarMensaje("Error""Identificador no encontrado")


def eliminar():
    if((ID.get() == ""or (ID.get() == 0)):
        mostrarMensaje("Error""Debes insertar un identificador valido")
    else:
        try:
            borrar(ID.get())
            mostrarMensaje("Borrar""Contacto borrado")
            limpiarDatos()
            mostrar()
        except:
            mostrarMensaje("Error""Identificador no encontrado")


def mostrar():
    listado = consultar()
    text.delete(1.0END)
    text.insert(INSERT"ID\tNombre\tApellidos\t\tTelefono\tEmail\n")
    for elemento in listado:
        id = elemento[0]
        nombre = elemento[1]
        apellidos = elemento[2]
        telefono = elemento[3]
        email = elemento[4]
        text.insert(INSERTid)
        text.insert(INSERT"\t")
        text.insert(INSERTnombre)
        text.insert(INSERT"\t")
        text.insert(INSERTapellidos)
        text.insert(INSERT"\t\t")
        text.insert(INSERTtelefono)
        text.insert(INSERT"\t")
        text.insert(INSERTemail)
        text.insert(INSERT"\n")


def buscar():
    if((ID.get() == ""or (ID.get() == 0)):
        mostrarMensaje("Error""Debes insertar un identificador valido")
    else:
        contactos = dameContacto(ID.get())
        for contacto in contactos:
            ID.set(contacto[0])
            nombre.set(contacto[1])
            apellidos.set(contacto[2])
            telefono.set(contacto[3])
            email.set(contacto[4])
        mostrarMensaje("Buscar""Contacto encontrado")


ventana = Tk()
ventana.config(bg=colorVentana)
ventana.geometry(anchoAlto+posicionX+posicionY)
ventana.title("Agenda")
frame = Frame()
frame.config(width=ANCHOheight=ALTO)
frame.config(bg=colorVentana)
frame.pack()
# variables
ID = IntVar()
nombre = StringVar()
apellidos = StringVar()
telefono = StringVar()
email = StringVar()
# widgets
etiquetaID = Label(frametext="ID: ").place(x=50y=50)
cajaID = Entry(frametextvariable=ID).place(x=130y=50)
etiquetaNombre = Label(frametext="Nombre: ").place(x=50y=90)
cajaNombre = Entry(frametextvariable=nombre).place(x=130y=90)
etiquetaApellidos = Label(frametext="Apellidos: ").place(x=50y=130)
cajaApellidos = Entry(frametextvariable=apellidos).place(x=130y=130)
etiquetaTelefono = Label(frametext="Telefono: ").place(x=50y=170)
cajaTelefono = Entry(frametextvariable=telefono).place(x=130y=170)
etiquetaEmail = Label(frametext="Email: ").place(x=50y=210)
cajaEmail = Entry(frametextvariable=email).place(x=130y=210)
text = Text(frame)
text.place(x=50y=240width=500height=200)
botonAñadir = Button(frametext="Añadir",
                     command=guardar).place(x=150y=500)
botonBorrar = Button(frametext="Borrar",
                     command=eliminar).place(x=200y=500)
botonConsultar = Button(frametext="Consultar",
                        command=mostrar).place(x=250y=500)
botonModificar = Button(frametext="Actualizar",
                        command=actualizar).place(x=320y=500)
botonBuscar = Button(frametext="Buscar"command=buscar).place(x=390y=500)
ventana.mainloop()


Script base de datos:
import sqlite3


def conectar():
    conexion = sqlite3.connect("agenda.db")
    cursor = conexion.cursor()
    return conexioncursor


def crearTabla():
    conexioncursor = conectar()
    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(cursor.execute(sql)):
        print("Tabla creada")
    else:
        print("No se pudo crear la tabla")
    conexion.close()


def insertar(datos):
    conexioncursor = conectar()
    sql = """
    INSERT INTO agenda(nombre,apellidos,telefono,email) VALUES (?,?,?,?)
    """
    if(cursor.execute(sqldatos)):
        print("Datos guardados")
    else:
        print("No se pudieron guardar los datos")
    conexion.commit()
    conexion.close()


def consultar():
    conexioncursor = conectar()
    sql = "SELECT id,nombre,apellidos,telefono,email from agenda"
    cursor.execute(sql)
    listado = []
    for fila in cursor:
        listado.append(fila)
        # print("ID = ", fila[0])
        # print("Nombre = ", fila[1])
        # print("Telefono = ", fila[2], "\n")
    listado.sort()
    conexion.close()
    return listado


def dameContacto(id):
    conexioncursor = conectar()
    sql = "SELECT * from agenda where id="+str(id)
    cursor.execute(sql)
    contacto = cursor.fetchall()
    conexion.close()
    return contacto


def modificar(idnombreapellidostelefonoemail):
    conexioncursor = conectar()
    sql = "UPDATE agenda SET nombre='"+nombre+"',apellidos='"+apellidos + \
        "', telefono='"+telefono+"', email='"+email+"' where ID="+str(id)
    cursor.execute(sql)
    cursor.close()
    conexion.commit()
    conexion.close()


def borrar(id):
    conexioncursor = conectar()
    sql = "DELETE from agenda where ID="+str(id)
    cursor.execute(sql)
    cursor.close()
    conexion.commit()
    conexion.close()