Curso Python
Curso Python
Conceptos clave:
Instalación de Python:
Imprimir en Pantalla:
Listas:
Creación, acceso y modificación de listas.
Tuplas:
Diccionarios:
Conjuntos:
Clases y Objetos:
Herencia y Polimorfismo:
Importación de Módulos:
Creación de Paquetes:
Recursos Adicionales:
Proyectos de Práctica:
1. Calculadora Interactiva:
Crea una calculadora que pueda realizar operaciones básicas según la entrada
del usuario.
2. Gestor de Tareas:
Historia:
Python fue creado por Guido van Rossum y su primera versión, Python 0.9.0,
fue lanzada en febrero de 1991. Van Rossum quería crear un lenguaje que
fuera fácil de leer y que permitiera a los programadores expresar conceptos en
menos líneas de código que en lenguajes como C++ o Java.
Versatilidad:
Flask y Django son dos populares frameworks web en Python. Flask es más
ligero y fácil de aprender, mientras que Django es un marco más completo y
estructurado.
Verificación de la Instalación:
Función print():
pythonCopy code
print("¡Hola, Python!")
Declaración de Variables:
En Python, puedes declarar una variable y asignarle un valor en una sola línea.
pythonCopy code
pythonCopy code
Operadores Aritméticos:
Python incluye operadores aritméticos estándar como suma (+), resta (-),
multiplicación (*), división (/) y módulo (%).
pythonCopy code
resultado = 10 + 5 # suma
Puedes comparar valores usando operadores como == (igual a), != (no igual a),
< (menor que), > (mayor que), etc.
pythonCopy code
pythonCopy code
Python admite operadores de asignación abreviada como +=, -=, *=, /=, que
permiten actualizar el valor de una variable de manera concisa.
pythonCopy code
Suma +:
pythonCopy code
suma = 5 + 3 # resultado: 8
Resta -:
pythonCopy code
resta = 7 - 2 # resultado: 5
Multiplicación *:
pythonCopy code
multiplicacion = 4 * 6 # resultado: 24
División /:
pythonCopy code
Módulo %:
pythonCopy code
Potencia **:
pythonCopy code
potencia = 2 ** 3 # resultado: 8
Igual a ==:
pythonCopy code
resultado = (5 == 5) # True
No igual a !=:
pythonCopy code
resultado = (7 != 3) # True
pythonCopy code
and:
pythonCopy code
or:
pythonCopy code
not:
pythonCopy code
Precedencia de Operadores:
pythonCopy code
4.1.1 Declaración if
Ejemplo:
pythonCopy code
Explicación:
Aquí le estamos diciendo a Python: "Si la edad es igual o mayor a 18, imprime 'Eres
mayor de edad'".
4.1.2 Declaración else
La declaración else se utiliza para manejar el caso en que la condición en if no sea verdadera.
Ejemplo:
pythonCopy code
edad = 16 if edad >= 18: print("Eres mayor de edad") else: print("Eres menor de edad")
Explicación:
Si la edad no es mayor o igual a 18, Python imprimirá "Eres menor de edad" gracias a
else.
Ejemplo:
pythonCopy code
puntaje = 85 if puntaje >= 90: print("A") elif puntaje >= 80: print("B") else: print("C")
Explicación:
Imprime "A" si el puntaje es 90 o más, "B" si es 80 o más pero menos de 90, y "C" en
otros casos.
El bucle while se utiliza para repetir un bloque de código mientras una condición sea
verdadera.
Ejemplo:
pythonCopy code
Explicación:
Este código imprimirá los números del 0 al 4 porque contador < 5 es verdadero.
Ejemplo:
pythonCopy code
Explicación:
break se utiliza para salir completamente de un bucle, y continue se utiliza para pasar a la
siguiente iteración del bucle.
Ejemplo:
pythonCopy code
Explicación:
Imprime los números del 0 al 4 y luego sale del bucle cuando i es igual a 5.
Ejemplo:
pythonCopy code
try: resultado = 10 / 0 except ZeroDivisionError: print("No se puede dividir por cero") finally:
print("Esta parte siempre se ejecuta")
Explicación:
Intenta hacer una operación aritmética. Si hay un error (como dividir por cero), maneja
la excepción en except.
Los context managers facilitan la gestión de recursos, como abrir y cerrar archivos de manera
automática.
Ejemplo:
pythonCopy code
Explicación:
4.3.3 Generadores
Ejemplo:
pythonCopy code
4.4 Resumen
Estas estructuras de control de flujo son esenciales en Python. Las condicionales y bucles son
fundamentales, mientras que las estructuras avanzadas proporcionan herramientas más
poderosas para situaciones específicas. ¡La práctica con ejemplos simples te ayudará a
comprender mejor cómo utilizarlas en tus programas!
En programación, una función es un bloque de código reutilizable que realiza una tarea
específica. Las funciones ayudan a organizar y modularizar el código, permitiendo que partes
específicas sean ejecutadas cuando se necesiten.
En Python, una función se define con la palabra clave def, seguida del nombre de la función y
paréntesis que pueden contener parámetros.
Ejemplo:
pythonCopy code
Explicación:
Hemos definido una función llamada saludar que simplemente imprime "¡Hola!".
Ejemplo:
pythonCopy code
saludar()
Explicación:
Las funciones pueden aceptar parámetros, que son valores que la función puede usar durante
su ejecución.
Ejemplo:
pythonCopy code
Explicación:
pythonCopy code
saludar_persona("Juan")
Explicación:
Las funciones pueden devolver un valor utilizando la palabra clave return. Este valor puede ser
utilizado en el código que llamó a la función.
Ejemplo:
pythonCopy code
Explicación:
Hemos definido una función llamada sumar que toma dos parámetros a y b, realiza
una operación y devuelve el resultado.
pythonCopy code
Explicación:
Las funciones pueden tener argumentos con valores predeterminados, lo que significa que si
no se proporciona un valor al llamar a la función, se utiliza el valor predeterminado.
Ejemplo:
pythonCopy code
Explicación:
Hemos definido una función llamada saludar_con_saludo que toma un parámetro
saludo con un valor predeterminado "Hola".
pythonCopy code
saludar_con_saludo()
Explicación:
Las variables definidas dentro de una función tienen un ámbito local y solo son accesibles
dentro de esa función. Las variables definidas fuera de una función tienen un ámbito global y
son accesibles desde cualquier lugar del código.
Ejemplo:
pythonCopy code
Explicación:
Es una buena práctica documentar funciones para explicar su propósito y cómo deben ser
utilizadas. Esto se hace mediante un comentario llamado docstring, que es una cadena de
texto triple (comillas simples o dobles) colocada justo debajo de la definición de la función.
Ejemplo:
pythonCopy code
def multiplicar(a, b): """ Esta función multiplica dos números y devuelve el resultado. """
resultado = a * b return resultado
Explicación:
En Python, las funciones son objetos de primera clase, lo que significa que puedes pasar
funciones como argumentos a otras funciones y devolver funciones desde otras funciones.
Ejemplo:
pythonCopy code
def suma(a, b): return a + b def operacion(func, x, y): return func(x, y) resultado =
operacion(suma, 3, 4) print(resultado)
Explicación:
La función operacion toma otra función func y la utiliza para realizar una operación
con x e y.
5.10 Resumen
Las funciones son bloques de código reutilizables que ayudan a organizar y modularizar
programas. Pueden aceptar parámetros, devolver valores y tener un ámbito local o global. La
documentación de funciones y la capacidad de trabajar con funciones como objetos hacen que
Python sea flexible y poderoso en el manejo de funciones. ¡Practica la creación y llamada de
funciones para mejorar tu habilidad en Python!
6.1 Listas
Las listas en Python son estructuras de datos versátiles y dinámicas que te permiten almacenar
y organizar colecciones de elementos. Puedes pensar en ellas como contenedores flexibles que
pueden contener diferentes tipos de datos, como números, cadenas de texto o incluso otras
listas. Una de las principales características de las listas es su capacidad para cambiar y crecer
durante la ejecución del programa.
Cuando creas una lista, encierras los elementos entre corchetes [] y los separas por comas.
Cada elemento en la lista tiene un índice, que comienza desde 0. Esto significa que puedes
acceder a un elemento específico utilizando su posición en la lista.
Las listas en Python son mutables, lo que significa que puedes modificar su contenido. Puedes
cambiar el valor de un elemento, agregar nuevos elementos al final de la lista o incluso
eliminar elementos. Además, las listas admiten la iteración, lo que facilita la realización de
operaciones en cada elemento de la lista utilizando bucles.
Crear una lista es sencillo. Simplemente encierra los elementos entre corchetes [] y sepáralos
por comas.
Ejemplo:
pythonCopy code
Explicación:
Hemos creado una lista llamada frutas que contiene tres elementos: "manzana",
"banana" y "cereza".
6.1.2 Acceso a Elementos de una Lista
Los elementos en una lista están indexados, comenzando desde 0. Puedes acceder a un
elemento especificando su índice entre corchetes.
Ejemplo:
pythonCopy code
Explicación:
Las listas son mutables, lo que significa que puedes cambiar el valor de un elemento específico
utilizando su índice.
Ejemplo:
pythonCopy code
Explicación:
Ejemplo:
pythonCopy code
frutas.append("kiwi") print(frutas)
Explicación:
Para saber cuántos elementos tiene una lista, puedes utilizar la función len().
Ejemplo:
pythonCopy code
Explicación:
Puedes utilizar bucles para recorrer todos los elementos de una lista.
Ejemplo:
pythonCopy code
Explicación:
Este bucle imprime cada elemento de la lista frutas en una nueva línea.
6.2 Tuplas
Las tuplas son estructuras de datos similares a las listas, pero con una diferencia fundamental:
son inmutables. Una vez que defines una tupla, no puedes modificar su contenido. Esto
significa que las tuplas son estáticas y no cambian durante la ejecución del programa.
Las tuplas se crean utilizando paréntesis () y pueden contener diferentes tipos de datos.
Aunque no puedes modificar los elementos de una tupla después de su creación, aún puedes
acceder a ellos utilizando índices.
La inmutabilidad de las tuplas las hace útiles en situaciones donde necesitas asegurarte de que
los datos no cambien accidentalmente. Por ejemplo, podrías usar una tupla para representar
coordenadas fijas en un plano, donde las posiciones x e y no deben modificarse.
Crear una tupla es similar a una lista, pero se utiliza paréntesis () en lugar de corchetes.
Ejemplo:
pythonCopy code
coordenadas = (3, 4)
Explicación:
Al igual que con las listas, puedes acceder a los elementos de una tupla utilizando índices.
Ejemplo:
pythonCopy code
x = coordenadas[0] print(x)
Explicación:
Una característica crucial de las tuplas es que son inmutables. No puedes modificar sus valores
después de haber sido creadas.
Ejemplo:
pythonCopy code
# Esto generará un error coordenadas[0] = 5
Explicación:
Obtendrás un error porque estás tratando de modificar una tupla, lo cual no está
permitido.
Las tuplas son útiles cuando necesitas asegurarte de que los datos no cambien
accidentalmente. Por ejemplo, podrías usar una tupla para representar coordenadas fijas en
un plano, donde las posiciones x e y no deben modificarse.
Ejemplo:
pythonCopy code
punto_fijo = (0, 0)
Explicación:
Creamos una tupla para representar un punto fijo en un plano, y sabemos que sus
coordenadas no cambiarán.
6.3 Resumen
Las listas y las tuplas en Python son herramientas fundamentales para organizar y manipular
datos. La elección entre usar una lista o una tupla dependerá de si necesitas la flexibilidad de
una estructura mutable o la estabilidad de una estructura inmutable.
En Python, además de listas y tuplas, existen estructuras de datos más avanzadas que ofrecen
funcionalidades específicas para resolver diversos problemas. Exploraremos tres de estas
estructuras: conjuntos (set), diccionarios (dict), y estructuras de datos basadas en la librería
collections.
Puedes crear un conjunto utilizando la función set() o encerrando los elementos entre llaves {}.
Ejemplo:
pythonCopy code
Ejemplo:
pythonCopy code
Explicación:
Ejemplo:
pythonCopy code
Explicación:
Ejemplo:
pythonCopy code
Explicación:
Puedes modificar el valor de una clave existente o agregar un nuevo par clave-valor.
Ejemplo:
pythonCopy code
frutas_dict["kiwi"] = 4 frutas_dict["manzana"] = 6
Explicación:
La librería collections ofrece estructuras de datos adicionales que extienden las capacidades de
las listas, tuplas y diccionarios.
7.3.1 namedtuple
namedtuple crea tuplas con campos nombrados, lo que hace que sea más legible y
autodocumentado.
Ejemplo:
pythonCopy code
Explicación:
7.3.2 defaultdict
Ejemplo:
pythonCopy code
Explicación:
7.3.3 Counter
Ejemplo:
pythonCopy code
7.4 Resumen
En OOP, una clase es una plantilla para crear objetos. Los objetos son instancias de una clase.
Definimos una clase utilizando la palabra clave class.
Ejemplo:
pythonCopy code
class Coche: def __init__(self, marca, modelo, año): self.marca = marca self.modelo = modelo
self.año = año def obtener_informacion(self): return f"{self.marca} {self.modelo} ({self.año})"
Explicación:
Hemos definido una clase Coche con un constructor __init__ que inicializa las
propiedades marca, modelo y año. También hemos definido un método
obtener_informacion que devuelve una cadena con la información del coche.
Creamos objetos instanciando una clase. Los objetos son instancias únicas de la clase, cada
uno con sus propias propiedades.
Ejemplo:
pythonCopy code
Explicación:
Hemos creado dos objetos coche_1 y coche_2 utilizando la clase Coche con valores
específicos para cada propiedad.
8.1.3 Acceso a Propiedades y Métodos
Ejemplo:
pythonCopy code
print(coche_1.marca) print(coche_2.obtener_informacion())
Explicación:
8.2 Herencia
La herencia permite que una clase herede propiedades y métodos de otra clase. La clase que
hereda se llama subclase, y la clase de la cual se hereda se llama superclase.
Ejemplo:
pythonCopy code
Explicación:
Hemos creado una subclase CocheElectrico que hereda de la clase Coche. La subclase
tiene su propio constructor y método obtener_informacion, que también llama al
método de la superclase.
8.3 Encapsulamiento
Ejemplo:
pythonCopy code
class Persona: def __init__(self, nombre, edad): self._nombre = nombre self._edad = edad def
obtener_nombre(self): return self._nombre def establecer_edad(self, nueva_edad): if
nueva_edad > 0: self._edad = nueva_edad
Explicación:
Hemos utilizado un guion bajo como prefijo (_nombre y _edad) para indicar que estas
propiedades son privadas. También hemos proporcionado métodos para obtener el
nombre y establecer la edad de manera controlada.
8.4 Polimorfismo
El polimorfismo permite que objetos de diferentes clases sean tratados como objetos de una
clase común. Esto se logra mediante el uso de métodos con el mismo nombre en diferentes
clases.
Ejemplo:
pythonCopy code
class Gato: def hacer_sonido(self): return "Miau" class Perro: def hacer_sonido(self): return
"Guau" def hacer_sonido_animal(animal): return animal.hacer_sonido() gato = Gato() perro =
Perro() print(hacer_sonido_animal(gato)) # Salida: Miau print(hacer_sonido_animal(perro)) #
Salida: Guau
Explicación:
Hemos creado las clases Gato y Perro con un método común hacer_sonido. La función
hacer_sonido_animal puede aceptar tanto un gato como un perro y llamar al método
correspondiente.
8.5 Resumen
El manejo de errores es una parte esencial de la programación para garantizar que tu código
sea robusto y pueda manejar situaciones inesperadas. Python proporciona una estructura de
manejo de errores mediante el uso de bloques try, except y finally.
El bloque try se utiliza para encerrar el código que podría generar una excepción. Si se produce
una excepción, el control del programa se transfiere al bloque except correspondiente.
Ejemplo:
pythonCopy code
Explicación:
Hemos intentado realizar una división por cero, lo cual genera una excepción
ZeroDivisionError. El bloque except maneja esta excepción e imprime un mensaje de
error.
9.2 Manejo de Excepciones Múltiples
Puedes manejar múltiples excepciones en un solo bloque except o tener varios bloques except
para diferentes tipos de excepciones.
Ejemplo:
pythonCopy code
try: valor = int("abc") except ValueError: print("Error: No se puede convertir a entero.") except
Exception as e: print(f"Error inesperado: {e}")
Explicación:
Ejemplo:
pythonCopy code
Explicación:
Ejemplo:
pythonCopy code
Explicación:
Ejemplo:
pythonCopy code
def dividir(a, b): if b == 0: raise ValueError("No se puede dividir por cero.") return a / b try:
resultado = dividir(10, 0) except ValueError as e: print(f"Error: {e}")
Explicación:
Hemos definido una función dividir que lanza una excepción ValueError si intentamos
dividir por cero. En el bloque try, intentamos llamar a esta función con una división por
cero y manejamos la excepción.
9.6 Resumen
El manejo de errores en Python mediante los bloques try, except, else, finally, y el
lanzamiento de excepciones con raise, te permite construir programas más robustos y prever
situaciones inesperadas. Aprender a identificar y manejar adecuadamente las excepciones te
ayudará a mejorar la calidad y confiabilidad de tu código. ¡Practica y familiarízate con estas
técnicas para mejorar tu habilidad en el manejo de errores en Python!
En Python, los módulos y paquetes son herramientas esenciales para organizar y reutilizar
código. Un módulo es simplemente un archivo de Python, mientras que un paquete es un
conjunto de módulos organizados en directorios. A continuación, exploraremos cómo trabajar
con módulos y paquetes.
Crear un módulo es tan simple como escribir código Python en un archivo y guardarlo con la
extensión .py. Vamos a crear un módulo llamado operaciones con algunas funciones
matemáticas básicas.
pythonCopy code
def suma(a, b): return a + b def resta(a, b): return a - b def multiplicacion(a, b): return a * b def
division(a, b): if b != 0: return a / b else: return "Error: División por cero."
Explicación:
pythonCopy code
import operaciones a = 10 b = 5 print("Suma:", operaciones.suma(a, b)) print("Resta:",
operaciones.resta(a, b)) print("Multiplicación:", operaciones.multiplicacion(a, b))
print("División:", operaciones.division(a, b))
Explicación:
luaCopy code
mi_proyecto/ |-- geometria/ | |-- __init__.py | |-- area.py | |-- perimetro.py |-- main.py
pythonCopy code
pythonCopy code
Explicación:
pythonCopy code
Explicación:
Hemos importado los módulos del paquete geometria y utilizado sus funciones en el
script main.py.
10.5 __init__.py en Paquetes
El archivo __init__.py en un directorio indica que ese directorio debe tratarse como un
paquete. Puede estar vacío o contener código de inicialización del paquete.
10.6 Resumen