Subido por german saavedra

Curso de programación orientado a objetos y sql

Anuncio
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.
Descargar