CURSO DE PYTHON. 1. Inicio del curso de programación de Python desde el nivel básico, solo tocaremos los ejercicios para llevar un control de la misma. 2. Problema número #1 sobre tipos de datos simples. Escribir un programa que pregunte el nombre por pantalla y lo muestre. #problema #2 hay que escribir un programa que pregunte al usuario su nombre = input('cual es tu nombre: ') print('el nombre de la persona es: ' +nombre) 3. Problema # 2. escribir un programa que muestre el resultado de la siguiente operación aritmética. #Escribir un programa que resuelva la siguiente operacion aritmetica operacion = (((3+2)/(2*5))**2) print(operacion) 4. Escribir un programa que pregunte al usuario una cantidad a invertir, el interés anual y el número de años, y muestre por pantalla el capital obtenido en la inversión. #Escribir un programa que pregunte el monto a # invertir, el interes y los años luego imprima por # pantalla la ganancia ci = float(input('introdusca el capital a invertir: ')) n = float(input('introdusca el numero de anos: ')) i = float(input('introdusca la tasa de interes anual: ')) cf = (ci*(1 + i)**n) print('el monta a ganar es : '+ str(cf)) 5. Una panadería vende barras de pan a 3.49€ cada una. El pan que no es el día tiene un descuento del 60%. Escribir un programa que comience leyendo el número de barras vendidas que no son del día. Después el programa debe mostrar el precio habitual de una barra de pan, el descuento que se le hace por no ser fresca y el coste final total. precio_barra = 3.49 descuento = 0.6 cantidad_vendida = int(input('numero de panes vendidos que no son del dia : ')) coste_final = cantidad_vendida*precio_barra*(1 -descuento) print('la cantidad final: ' + str(round(coste_final, 2)) + str('$')) 6. Ahora vamos a realizar programas con cadenas de textos. Problema #1, escribir un programa que pregunte al usuario en pantalla su nombre y un numero entero, luego repita tantas veces como el numero entero. #vamos escribir un programa que pregunte el # nombre y un numero entero luego lo repetimos por el numero entero nombre = input('Coloque su nombre: ') n = int(input('coloque un numero: ')) print(n*('el nombre es: ' + nombre + '\n')) 7. Problema #2, con cadenas de textos. #Vamos a crear un programa que pregunte el nombre de la # persona y luego cambie la palabra a mayúscula, minúscula y luego # en la primera letra en mayúscula nombre = input('escriba su nombre: ') nuevo_nombre1 = nombre.capitalize() nuevo_nombre2 = nombre.upper() nuevo_nombre3 = nombre.title() print('el nombre con la primera letra mayúscula es: '+ nuevo_nombre1 +'\n'+ 'el segundo nombre con toda mayúscula es: '+ nuevo_nombre2 + '\n'+ 'el tercer nombre con la letra mayúscula al principio: ' + nuevo_nombre3) 8. Problema #3, con cadenas de textos #vamos a escribir un programa que pregunte en consola el # nombre luego lea las catidad de letras que contiene la palabra. nombre = input('cual es tu nombre: ') print('mi nombre es : '+ nombre.upper()) print('tiene la cantidad de letras: '+ str(len(nombre)) 9. Problema #4, con cadenas de textos #Escribir un programa que muestre una frase invertida texto = "Hola mundo" palabras = texto.split() print(palabras) palabras_invertidas = palabras[::-1] print(palabras_invertidas) texto_invertido = " ".join(palabras_invertidas) print(texto_invertido) 10. Problema #5, con cadenas de textos #vamos a escribir un programa que me limite la palabra palabra = input('la palabra: ') la_nueva_palabra = palabra[:palabra.find('@')] print(la_nueva_palabra + '@.ve') 11. Problema #6, con cadena de textos #vamos a escribir un programa que pregunte el precio con # céntimos y me lo muestre por pantalla precio = input('coloque el precio del producto: ') print('el precio en euro es: '+ precio[:precio.find('.')] + ' con '+ precio[precio.find('.') +1 :] +' centimos') 12. Problema #7, con cadenas de textos #Escribir un programa que pregunte el nombre # de un producto, su precio y un número de # unidades y muestre por pantalla una cadena # con el nombre del producto seguido de su precio # unitario con 6 dígitos enteros y 2 decimales, el número de # unidades con tres dígitos y el coste total con 8 # dígitos enteros y 2 decimales. producto = input('coloque el producto: ') precio = float(input('coloque el precio: ')) cantidad = int(input('coloque la cantidad: ')) print('El {producto} cuesta: {precio} la cantidad es : {cantidad} y el total es = {total}'.format(producto=producto, cantidad=cantidad, precio=precio, total = precio*cantidad )) 13. Continuando con las prácticas de Python, entramos a resolver problemas con condicionales. #Escribir un programa que pregunte la # edad e indique se es mayor de edad o no edad = int(input('indique su edad: ')) if edad >18: print('es mayor de edad') else: print('no es mayor de edad') 14. Problema #2, con condicionales #vamos escribir un programa que pida la # contraseña y luego haga una comparacion contraseña = 'carolinamaria' contraseña_usuario = input('coloque la clave: ') if contraseña == contraseña_usuario.lower(): print('la clve es correcta') else: print('la clave es incorrecta') 15. Problema #2, con condicionales. Vamos a escribir un programa que calcule la división y devuelva un error por la consola si el número es cero. #vamos a escribir un programa que # coloque dos números y me devuelva su división n = int(input("coloque su numero:")) m = int(input('coloque su segundo numero: ')) if n == 0: input('error de la divicion: ') else: input('el valor es: ' + str(m/n)) 16. Problema #3, condicionales. Vamos a escribir un programa que determine lo siguiente: edad = int(input("coloque su edad: ")) ingreso = float(input('coloque su ingreso: ')) if edad == 16 and ingreso >= 1000: input('debe pagar impuestos ') else: input('no paga impuestos ') 17. Problema #4, condicionales #Escribir un programa que pida al usuario un numero entero #Que muestre por pantalla si es par o impar n = int(input('coloque un numero: ')) if n % 2 == 0: print('el numero es par ') else: print('el numero es impar') 18. Problema #5, condicionales # los alumnos del curso se han dividido en dos grupos a y b de # acuerdo al sexo y al nombre. El grupo a esta formado por \ # las mujeres con un nombre anterior a la M y los hombres # con un nombre posterior a la N y el grupo B por el resto. # Escribir un programa que pregunte al usuario su nombre y su sexo, # y muestre por pantalla el grupo que le corresponde. nombre = input('coloque su nombre: ') genero = input('coloque si es H O M: ') if genero == 'M': if nombre.lower() < 'm': grupo = 'A' else: grupo = 'B' else: if nombre.lower() > 'n': grupo = 'A' else: grupo = 'B' print('tu grupo es ' + grupo) 19. Problema #6, condicionales. Los tramos impositivos para la declaración de la renta en un determinado país son los siguientes: Renta Tipo impositivo Menos de 10000€ 5% Entre 10000€ y 20000€ 15% Entre 20000€ y 35000€ 20% Entre 35000€ y 60000€30% Más de 60000€ 45% Escribir un programa que pregunte al usuario su renta anual y muestre por pantalla el tipo impositivo que le corresponde. #vamos a crear primero la variable de la renta renta = float(input('coloque la renta: ')) if renta < 10000: tipo = 5 elif renta < 20000: tipo = 15 elif renta < 35000: tipo = 20 elif renta < 60000: tipo = 30 else: tipo = 45 pago = tipo*renta/100 print(f'la renta a pagar es: {pago} ') 20. Problema #7, condicionales La pizzería Bella Napoli ofrece pizzas vegetarianas y no vegetarianas a sus clientes. Los ingredientes para cada tipo de pizza aparecen a continuación.Ingredientes vegetarianos: Pimiento y tofu.Ingredientes no vegetarianos: Peperoni, Jamón y Salmón. Escribir un programa que pregunte al usuario si quiere una pizza vegetariana o no, y en función de su respuesta le muestre un menú con los ingredientes disponibles para que elija. Solo se puede eligir un ingrediente además de la mozzarella y el tomate que están en todas la pizzas. Al final se debe mostrar por pantalla si la pizza elegida es vegetariana o no y todos los ingredientes que lleva. #Vamos a escribir un programa que calcule el menu de un restauran #presentacion de los tipos de pizza print('Bienvenido a la Pizza Bella Napoli\nordene: \n 1. vegetariana \n 2. no vegetariana') ordene = input('coloque el numero de orden: ') if ordene == '1': print('los ingredientes de la pizza son dos \n 1. pimenton \n 2. tofu') ingrediente = input('coloque el ingrediente: ') print('la pizza contiene mozzarella tomate y ', end= "") if ingrediente == '1': print('pimenton') else: print('tofu') else: print('los ingredientes de la pizza son tres \n3. peperoni') \n 1. jamon \n 2. salmon ingrediente = input('coloque el ingrediente: ') print('la pizza contiene mozzarella tomate y ', end= "") if ingrediente == '1': print('jamon') elif ingrediente == '2': print('salmon') else: print('peperoni') 21. Problemas utilizando bucles, problema #1 #vamos escribir un programa que muestre por pantalla el nombre diez veces nombre = input('coloque su nombre: ') for i in range(10): print(f'{i+1} '+ nombre) 22. Bucles, problema #2, escribir un programa que pregunte al usuario su edad y muestre por pantalla todos los años que ha cumplido (desde 1 hasta su edad) #solicitar su edad edad = int(input('coloque su edad: ')) for i in range(edad): print("Has cumplido " + str(i+1) + " años") 23. Bucles, problema #3, escribir un programa que pida al usuario un numero entero positivo y muestre por pantalla la cuenta atrás desde ese número hasta cero separados por comas. 24. CURSO DE PROGRAMACIÓN ORIENTADO A OBJETOS. 1. Antes de empezar, es importante que la programación orientada a objetos es la manera más fácil y organizada para estructurar un programa, es decir, cómo pensamos en la vida diaria. 2. Para iniciar el curso primero vamos hacer una representación de la manera en podemos asignar una clase o instanciarla al realizar la instancia se crea lo que se conoce como objeto. #esta es la representación de una clase class celular(): #Esta es la representación de los atributos marca = 'sansun' modelo = 's1' color = 'azul' #esta es la forma correcta de crear un objeto celular1 = celular() print(celular1.modelo) 3. Ahora vemos a entender lo que es un método, ahora pasa todo lo contrario definimos la clase luego una función, que en todo caso es el constructor y al final creamos un objeto. Es importante saber que la función va a solicitar los parámetros que en este caso es los atributos del instanciado a la clase y luego la instancia al objeto. #Ahora vamos a crear un método. class Carro: def __init__(self, marca, modelo, color): self.marca = marca self.modelo = modelo self.color = color carro_modelo = Carro("ferrari", "cat004", "plata") print(carro_modelo.color) 4. Ahora vimos los métodos, ahora veremos los métodos sin la función especial a la que hace referencia a un constructor siguiendo el mismo. # Ahora vamos a crear un método. class Carro: def __init__(self, marca, modelo, color): self.marca = marca self.modelo = modelo self.color = color #esta es la manera de hacer un método sin la opción anterior def llamar (self): print(f'estas llamando dentro de un: {self.marca}') carro_modelo = Carro("ferrari", "cat", "plata") print(carro_modelo.marca) carro_modelo.llamar() 5. Continuamente hacemos el siguiente ejercicio, donde vamos a crear una clase luego un constructor y además un método. #vamos hacer el presente ejercicio para un grupo de estudiantes #creamos la clase class grupo_estudio: #creamos el constructor def __init__(self, nombre, apellido, edad): self.nombre = nombre self.apellido = apellido self.edad = edad #creamos el metodo def estudiar (): print('estoy estudiando') #creamos las variables donde el usuario interactúa nombre = input('coloque tu nombre: ') apellido = input('coloque tu apellido: ') edad = input('coloque tu edad: ') #enviamos las variables estudiante = grupo_estudio(nombre, apellido, edad) #Ejecutamos la información del estudiante print( f""" El nombre del estudiante es: {estudiante.nombre}\n el apellido del estudiante es : {estudiante.apellido}\n la edad es : {estudiante.edad} """) #cramos una validación while True: que_estudia = input('estudia: ') if que_estudia.lower()== 'estudiar': grupo_estudio.estudiar() 6. Ahora trabajaremos con las herencias donde se creará la clase padre y la clase hija que heredad una de otra al ejecutarse. #estamos creando la clase padre class Persona: def __init__(self, nombre, apellido): self.nombre = nombre self.apellido = apellido # vamos a crear la clase hija class empleada (Persona): pass german = empleada('germam', 'saaa') print(german.apellido) 7. Ahora que pasa si a la clase hija queremos agregar otro atributo por ejemplo #estamos creando la clase padre class Persona: def __init__(self, nombre, apellido): self.nombre = nombre self.apellido = apellido # vamos a crear la clase hija otro atributo que nos permita ver por ejemplo la edad class empleada (Persona): def __init__(self, nombre, apellido, edad): super().__init__(nombre, apellido) self.edad = edad def hablar (self): print('hola estoy hablando solo ') german = empleada('germam', 'saaa', 23) print(german.edad) german.hablar() 8. Ahora vamos a ver las herencias múltiples. Es importante saber que dentro de las clases, se quiere llamar a un método es necesario colocar el super() antes para saber que es de la clase que heredad y si es de la misma clase colocamos el self. #En este apartado vamos a ver las herencias multiples. class Padre: def __init__(self, nombre, apellido, edad): self.nombre = nombre self.apeliido = apellido self.edad = edad def hablar ( self): return ' hablar poco' #creamos otra clase para mostrar la herencia class Artista: def __init__(self, Habilidad): self.Habilidad = Habilidad #ahora creamos la clase que heredad las anteriores class empleado_artista(Padre,Artista): def __init__(self, nombre, apellido, edad, Habilidad, salario, empresa): Padre.__init__(self, nombre, apellido, edad) Artista.__init__(self, Habilidad) self.salario = salario self.empresa = empresa def mostrar_habilidad (self): print(f'hola mi especialidad es : {super().hablar()}') #el objeto creado roberto = empleado_artista('roberto', 'saaa', 42, 'cantar', 1000, 'mecanico') #llamado de las clases print(roberto.Habilidad) print(roberto.salario) print(roberto.empresa) roberto.mostrar_habilidad() 9. Continuando con el curso vamos a trabajar con el MRO es decir el orden de resolución del método, que significa la construcción de una estructura del llamado correcto a la que cada clase forma o se alinea para tener un orden jerárquico lógico cuando existen métodos iguales dentro de las clases. Ejemplo: #metodo de resolucion de orden class A: def hablar (self): print('hola desde A') class B(A): pass class C(A): pass class D(B, C): pass d = D() d.hablar() 10. En este apartado vamos a realizar un ejercicio, del uso de herencia y super: crear un sistema para una escuela. En este sistema vamos a tener dos clases principales: Personas y Estudiante, tendrá los atributos de nombre y edad y un método que imprima el nombre y la edad de la persona. La clase estudiante heredara de la clase persona y también tendrá un atributo adicional: grado y un método que imprima el grado del estudiante. Deberás utilizar super () en el método de inicialización (init) para reutilizar el código de la clase padre (persona). Luego crea una instancia de a clase estudiante e imprime sus atributos y utiliza sus métodos para asegurarte de que todo funciona correctamente. Solución al ejercicio es: #creamos la clase padre class Persona: def __init__(self, nombre, edad) -> None: self.nombre = nombre self.edad = edad #luego creamos el metodo que imprima el nombre y la edad def mostrar_datos(self): print(f'Este es el nombre de la persona: {self.nombre}') print(f'Este es la edad de la persona: {self.edad}') #creamos la segundad clase que heredad de la clase padre. más el atributo grado class Alumno (Persona): def __init__(self, nombre, edad, grado): super().__init__(nombre, edad) self.grado = grado #creamos el metodo que imprime el grado def mostrar_grado(self): print(f'este es el grado: {self.grado}') #ahora creamos el objeto con la instancia alumno estudiante = Alumno('roberto', 23, 'sexto') #llamamos los métodos estudiante.mostrar_datos() estudiante.mostrar_grado() print(estudiante.grado) 11. Siguiendo con el curso orientado a objetos, se presenta lo que es el polimorfismo, en resumen, es la capacidad que tienen los objetos de responder a los mismos mensajes con diferentes implementaciones. #Primero creamos la clase de un animal con su sonido class Gato (): def sonido(self): return 'miau' #Segundo, creamos la clase de un animal con su sonido class Perro (): def sonido(self): return 'guau' #ahora creamos una funcion con la que mostramos los sonidos def mostrar_sonido( animal): return print(animal.sonido()) #ahora creamos los objetos perro = Perro() gato = Gato() print(gato.sonido()) mostrar_sonido(perro) 12. Encapsulamiento, es la forma en que se mantiene algo que le indica al programador que existe un atributo o método privado que debe de llamarla de la manera adecuada, en resumen, es para evitar ser modificadas desde el exterior. Por ejemplo: #creamos la clase class Saludar: #creamos los método, el primero def A_saludo(self): print('hola es german') se puede acceder el segundo no def __B_saludo(self): print('hola es german privado') #creamos los objetos llamar_saludar = Saludar() #llamamos los objetos con el método y comprobamos cual puede acceder. llamar_saludar.A_saludo() llamar_saludar.__B_saludo()# este llamado no es correcto. 13. Getters y setters son propiedades que nos permiten acceder a la propiedad privada de una clase incluso modificarlas desde el exterior sin modificar las condiciones internas de la clase, es decir podemos acceder de manera que no alteremos el orden de la clase y es una manera de entrar a la clase de forma segura. #creamos la clase class persona: def __init__(self, nombre, edad): self.__nombre = nombre self.__edad = edad #Definimos la función getters def caso1(self): return self.__nombre #Definimos la función setters def caso2 (self, nuevo_nombre): self.__nombre = nuevo_nombre #creamos el objeto alumno = persona('german', 42) #llamamos a la función getters alumno.caso1() A = alumno.caso1() print(A) #Generamos el cambio con la función setters alumno.caso2('germansaa') #luego hacemos otro llamado a la función getters con el nuevo parámetro B = alumno.caso1() print(B) otro ejemplo de los getters y setters es: class MiClase: def __init__(self): self._edad = 0 self.__nombre = 'german' @property def nombre(self): print("Método getter llamado") return self.__nombre @nombre.setter def nombre(self, nueva_nombre): self.__nombre = nueva_nombre objeto = MiClase() print(objeto.nombre) objeto.nombre = 'carlo' # Llama al método setter print(objeto.nombre) # Llama al método getter 14. El siguiente capitulo es sobre el uso de los decoradores. Los decoradores lo que realiza es, a una función le agrega otra función y luego esta se ejecuta con la nueva modificación sin alterar la original. #Para realizar una función decoradora es necesario crear la función def decoradora (funcion): #necesitamos un parámetro #creamos la función que vamos a modificar def funcion_modificada(): print('hola es german') funcion() print('hola es german dos') return funcion_modificada # es importante retornar la función modificada. # def saludo(): # print('hola es german uno') # funcion_modificada2 = decoradora(saludo) # funcion_modificada2() #la forma correta de hacerlo @decoradora def saludo (): print('hola es german uno') saludo() 15. Abstracción, es la forma en que el usuario que esté utilizando el software no tenga acceso al código no le interesa su parte interna solo que funcione. #creamos la clase con los métodos. class Auto (): def __init__(self) -> None: self._estado = 'apagado' def encender (self): self._estado = 'encendido' print('el auto esta encendido') def conducir (self): if self._estado == 'apagado': self.encender() print('conduciendo') else: print("no esta encendido") #lugo mandamos a que el usuario presione un botón y ejecute si va encender el auto conductor = Auto() conductor.conducir() 16. Clases abstractas. Las clases abstractas es la forma de implementar una secuencia estricta sin crear modificación en sus métodos un ejemplo sencillo es como implementar una plantillo. from abc import ABC, ABCMeta, abstractstaticmethod from typing import Any class Persona (ABC): @abstractstaticmethod def __init__(self, nombre, edad, sexo, actividad): self.nombre = nombre self.edad = edad self.sexo = sexo self.actividad = actividad @abstractstaticmethod def hacer_actividad(self): pass def Presentarce (self): print(f"hola me llamo: {self.nombre} y tengo {self.edad} anos") class Estudiante(Persona): def __init__(self, nombre, edad, sexo, actividad): super().__init__(self, nombre, edad, sexo, actividad) def hacer_actividad(self): print(f"estoy estudiando: {self.actividad}") class Profesor(Persona): def __init__(self, nombre, edad, sexo, actividad): super().__init__(self, nombre, edad, sexo, actividad) def hacer_actividad(self): print(f"estoy dando clases de : {self.actividad}") alumno = Estudiante('german', 42, 'masculino', 'ingenieria') teacher = Profesor('Saavedra', 45, 'masculino', 'mecanica') alumno.hacer_actividad() alumno.Presentarce() teacher.hacer_actividad() teacher.Presentarce() 17. Métodos especiales. Pendientes por los métodos especiales. Inicio del curso de sqlite3 1. Para dar inicio al curso de sqite3 procedemos de la siguiente manera, lo primero es instalar sqlite3 desde la página oficial. 2. Comencemos por saber que es SQL o que significa, en realidad es un lenguaje de consulta estructurado por sus siglas en ingles structured query languague, con el podemos modificar y hacer consultas a las bases de datos. SELECT* FROM Products, este es un ejemplo de la base de datos northwind 3.