Curso Python
Curso Python
Introducción a Python
Python fue creado por Guido van Rossum, un programador holandés, a
finales de los años 80 y principios de los 90. La primera versión de
Python, la 0.9.0, fue lanzada en 1991. Guido van Rossum nombró el
lenguaje en honor al grupo de comedia británico Monty Python, del cual
era un gran fan.
Python se diseñó con el objetivo de ser un lenguaje fácil de leer
y escribir, con una sintaxis clara y concisa. A lo largo de los años,
ha evolucionado y ganado popularidad hasta convertirse en uno de los
lenguajes de programación más utilizados en el mundo.
Características
Python tiene varias características que lo hacen atractivo tanto para
principiantes como para programadores experimentados:
Legibilidad
Python utiliza una sintaxis clara y sencilla, lo que facilita la lectura y
comprensión del código. Utiliza indentación (espacios o tabulaciones)
para delimitar bloques de código, lo que promueve un estilo de
programación estructurado y legible.
Tipado dinámico
En Python, no es necesario declarar explícitamente el tipo de datos de
las variables. Python infiere automáticamente el tipo de datos en función
del valor asignado a una variable, lo que simplifica la escritura de
código.
Interpretado
Python es un lenguaje interpretado, lo que significa que el código se
ejecuta línea por línea en tiempo real. Esto permite un ciclo de
desarrollo rápido y facilita la depuración del código.
Multiplataforma
Python se puede ejecutar en diferentes sistemas operativos, como
Windows, macOS y Linux, sin necesidad de modificar el código. Esto lo
convierte en un lenguaje versátil y portátil.
Amplia biblioteca estándar
Python viene con una extensa biblioteca estándar que proporciona una
gran cantidad de módulos y funciones para realizar diversas tareas,
como manipulación de archivos, conexión a bases de datos,
procesamiento de texto, entre otros.
Comunidad activa
Python cuenta con una comunidad de desarrolladores grande y activa
que contribuye con bibliotecas, frameworks y herramientas adicionales.
Esto significa que encontrarás una gran cantidad de recursos y soporte
disponibles.
Aplicaciones
Python se utiliza en una amplia gama de aplicaciones y dominios,
algunos ejemplos son:
Desarrollo web
Python es ampliamente utilizado en el desarrollo web backend,
con frameworks populares como Django y Flask.
Ciencia de datos
Python es el lenguaje preferido para el análisis de datos y la ciencia de
datos debido a bibliotecas como NumPy, Pandas y Matplotlib.
Automatización de tareas
Python se puede utilizar para automatizar tareas repetitivas, como
procesamiento de archivos, web scraping y pruebas de software.
Desarrollo de juegos
Python se utiliza en el desarrollo de juegos simples, especialmente con
bibliotecas como Pygame.
Descargar e instalar Python
Para comenzar a programar en Python, primero debes descargar e
instalar Python en tu computadora. Sigue estos pasos:
3. Una
Importante vez instalado,
Jupyter Notebook es una ejecuta el
excelente herramienta para siguiente
explorar, experimentar y comando para
iniciar compartir código Python de Jupyter
manera interactiva. Notebook:
jupyter notebooks
"Hola Mundo"
Es una tradición en el mundo de la programación comenzar con un
programa simple llamado "Hola Mundo". Este programa simplemente
muestra el mensaje "Hola Mundo" en la pantalla.
Indentación
if condition:
# Bloque de código si la condición es verdadera
instrucción1
instrucción2
else:
# Bloque de código si la condición es falsa
instrucción3
instrucción4
Comentarios
Los comentarios son líneas de texto en el código que son ignoradas por
el intérprete de Python. Se utilizan para explicar o documentar el código.
En Python, los comentarios de una sola línea comienzan con el símbolo
#, mientras que los comentarios de varias líneas se encierran entre
triples comillas """. Por ejemplo:
Uso de paréntesis
resultado = (a + b) * c
Enteros (int)
edad = 25
cantidad = 100
Flotantes (float)
nombre = "Juan"
mensaje = '¡Hola, mundo!'
Booleanos
es_mayor_de_edad = True
tiene_descuento = False
Ten en cuenta
Declaración y asignación de
variables
Las variables son contenedores que nos permiten almacenar y
manipular datos en nuestros programas. Para declarar y asignar un valor
a una variable en Python, utilizamos el operador de asignación =. El
nombre de la variable va a la izquierda del operador, y el valor que
deseas asignar va a la derecha. Por ejemplo:
nombre = "Juan"
edad = 25
altura = 1.75
es estudiante = True
a = b = c = 10
edad
nombre_completo
total_ventas
_contador
Ten en cuenta
Aritméticos
Los operadores aritméticos se utilizan para realizar operaciones
matemáticas básicas. Los principales operadores aritméticos en Python
son:
Ejemplos:
a = 10
b = 3
suma = a + b # 13
resta = a - b # 7
multiplicacion = a * b # 30
division = a / b # 3.333333333
división_entera = a // b # 3
modulo = a % b # 1
exponenciacion = a ** b # 1000
De comparación
Los operadores de comparación se utilizan para comparar dos valores y
devuelven un valor booleano (True o False) según el resultado de la
comparación. Los operadores de comparación en Python son:
Ejemplos:
a = 10
b = 3
igual = a == b # False
diferente = a != b # True
mayor que = a > b # True
menor que = a < b # False
mayor o igual = a >= b # True
menor o igual = a <= b # False
Lógicos
Los operadores lógicos se utilizan para combinar expresiones
condicionales y evaluar múltiples condiciones. Los operadores lógicos en
Python son:
Ejemplo:
a = 10
b = 3
Importante
Python sigue las reglas de precedencia de operadores, donde
ciertos operadores tienen prioridad sobre otros. En general, la
precedencia sigue el orden: paréntesis, exponenciación,
multiplicación/división, suma/resta, operadores de comparación y
operadores lógicos.
3. Estructuras de control
Las estructuras de control nos permiten controlar el flujo de ejecución de
nuestros programas. En Python, las estructuras de control más comunes
son las estructuras condicionales y los bucles. Estas estructuras nos
permiten tomar decisiones y repetir bloques de código según ciertas
condiciones.
Estructuras condicionales
Las estructuras condicionales nos permiten ejecutar diferentes bloques
de código según se cumpla o no una determinada condición. En Python,
las estructuras condicionales más utilizadas son if, if-else y if-elif-else.
IF
if condicion:
# Bloque de código a ejecutar si la condición es
verdadera
instrucciones
Ejemplo:
edad = 18
IF-ELSE
edad = 15
IF-ELIF-ELSE
Ejemplo:
calificacion = 85
For
El bucle for se utiliza para iterar sobre una secuencia (como una lista,
una tupla o una cadena) o cualquier objeto iterable. La sintaxis básica es
la siguiente:
Ejemplo:
En este ejemplo, el bucle for itera sobre la lista frutas. En cada iteración,
la variable fruta toma el valor de un elemento de la lista, y se ejecuta el
bloque de código dentro del bucle. En este caso, se imprime cada fruta
en una línea separada.
While
El bucle while se utiliza para repetir un bloque de código mientras una
condición sea verdadera. La sintaxis básica es la siguiente:
while condicion:
# Bloque de código a repetir
instrucciones
Ejemplo:
contador = 0
Control de bucles
Python proporciona algunas instrucciones especiales para controlar el
flujo de ejecución dentro de los bucles:
Break
contador = 0
while True:
print(contador)
contador += 1
if contador == 5:
break
En este ejemplo, el bucle while se ejecuta indefinidamente debido a la
condición True. Sin embargo, dentro del bucle se utiliza una estructura
condicional if para verificar si contador es igual a 5. Cuando se cumple
esta condición, se ejecuta la instrucción break, lo que hace que el bucle
se detenga y el flujo de ejecución continúe con la siguiente instrucción
fuera del bucle.
Continue
for i in range(10):
if i % 2 == 0:
continue
print(i)
En este ejemplo, el bucle for itera sobre los números del 0 al 9 utilizando
la función range(). Dentro del bucle, se verifica si el número es divisible
por 2 utilizando el operador de módulo %. Si el número es divisible por 2
(es decir, si es par), se ejecuta la instrucción continue, lo que hace que
se salte el resto del bloque de código y se pase a la siguiente iteración
del bucle. Como resultado, solo se imprimirán los números impares.
Pass
for i in range(5):
pass
En este ejemplo, el bucle for itera sobre los números del 0 al 4, pero no
se realiza ninguna acción dentro del bucle debido a la instrucción pass.
Esto puede ser útil cuando se está desarrollando un programa y se
desea reservar un bloque de código para implementarlo más adelante.
Conclusión
Listas
Una lista es una estructura de datos mutable y ordenada que permite
almacenar una colección de elementos. Los elementos de una lista
pueden ser de diferentes tipos de datos y se encierran entre corchetes
[], separados por comas.
Creación y acceso
Para acceder a los elementos de una lista, utiliza el índice del elemento
entre corchetes. Los índices comienzan desde 0.
print(frutas[0]) # Imprime "manzana"
print(frutas[1]) # Imprime "banana"
print(frutas[2]) # Imprime "naranja"
Métodos de listas
Ejemplo:
frutas.append("pera")
print(frutas) # Imprime ["manzana", "banana",
"naranja", "pera"]
frutas.insert(1, "uva")
print(frutas) # Imprime ["manzana", "uva",
"banana", "naranja", "pera"]
frutas.remove("banana")
print(frutas) # Imprime ["manzana", "uva",
"naranja", "pera"]
fruta_eliminada = frutas.pop(2)
print(frutas) # Imprime ["manzana", "uva", "pera"]
print(fruta_eliminada) # Imprime "naranja"
frutas.sort()
print(frutas) # Imprime ["manzana", "pera", "uva"]
frutas.reverse()
print(frutas) # Imprime ["uva", "pera", "manzana"]
Listas de comprensión
Las listas de comprensión son una forma concisa de crear nuevas listas
basadas en una secuencia existente. Permiten filtrar y transformar los
elementos de una lista en una sola línea de código.
Ejemplo:
numeros = [1, 2, 3, 4, 5]
cuadrados = [x ** 2 for x in numeros if x % 2 == 0]
print(cuadrados) # Imprime [4, 16]
Creación y acceso
punto = (3, 4)
Para acceder a los elementos de una tupla, utiliza el índice del elemento
entre corchetes, similar a las listas:
print(punto[0]) # Imprime 3
print(punto[1]) # Imprime 4
A diferencia de las listas, las tuplas son inmutables, lo que significa que
no se pueden modificar una vez creadas. No se pueden agregar,
eliminar o cambiar elementos en una tupla existente.
Las tuplas son útiles cuando necesitas almacenar una colección de
elementos que no deben modificarse, como coordenadas o datos de
configuración.
Métodos de tuplas
Creación y acceso
Para crear un diccionario, utiliza llaves y separa las claves y valores con
dos puntos.
Métodos de diccionarios
Ejemplo:
print(persona.keys()) # Imprime
dict_keys(["nombre", "edad", "ciudad"])
print(persona.values()) # Imprime
dict_values(["Juan", 25, "Madrid"])
print(persona.items()) # Imprime
dict_items([("nombre", "Juan"), ("edad", 25),
("ciudad", "Madrid")])
persona.update({"profesion": "Ingeniero"})
print(persona) # Imprime {"nombre": "Juan", "edad":
25, "ciudad": "Madrid", "profesion": "Ingeniero"}
Métodos de conjuntos
Ejemplo:
frutas.add("pera")
print(frutas) # Imprime {"manzana", "banana",
"naranja", "pera"}
frutas.remove("banana")
print(frutas) # Imprime {"manzana", "naranja",
"pera"}
frutas.discard("uva")
print(frutas) # Imprime {"manzana", "naranja",
"pera"}
frutas.clear()
print(frutas) # Imprime set()
def saludo():
print("¡Hola, mundo!")
def saludo(nombre):
print(f"¡Hola, {nombre}!")
Valores de retorno
Las funciones pueden devolver valores utilizando la palabra
clave return. El valor de retorno puede ser utilizado por el código que
llama a la función.
resultado = suma(3, 4)
print(resultado) # Imprime 7
cuadrado = lambda x: x ** 2
print(cuadrado(5)) # Imprime 25
Alcance de las variables (local vs.
global)
Las variables definidas dentro de una función tienen un alcance local, lo
que significa que solo son accesibles dentro de la función. Por otro lado,
las variables definidas fuera de cualquier función tienen un alcance
global y pueden ser accedidas desde cualquier parte del programa.
def funcion():
variable_local = 10
print(variable_local) # Accesible dentro de la
función
variable_global = 20
def funcion2():
print(variable_global) # Accesible desde
cualquier lugar
funcion() # Imprime 10
funcion2() # Imprime 20
print(variable_global) # Imprime 20
print(variable_local) # Genera un error, la
variable no está definida en este alcance.
Args:
base (float): La base del rectángulo.
altura (float): La altura del rectángulo.
Returns:
float: El área del rectángulo.
"""
return base * altura
def suma_variable(*numeros):
total = 0
for numero in numeros:
total += numero
return total
print(variable_no_definida)
Try
El bloque try contiene el código que puede generar una excepción. Si
ocurre una excepción dentro del bloque try, el flujo de ejecución se
transfiere al bloque except correspondiente.
try:
# Código que puede generar una excepción
resultado = 10 / 0 # División por cero
print(resultado)
except ZeroDivisionError:
print("Error: División por cero")
Except
El bloque except especifica el tipo de excepción que se desea capturar y
manejar. Puedes tener múltiples bloques except para manejar diferentes
tipos de excepciones.
try:
# Código que puede generar una excepción
resultado = 10 / 0 # División por cero
print(resultado)
except ZeroDivisionError:
print("Error: División por cero")
except ValueError:
print("Error: Valor inválido")
Finally
El bloque finally es opcional y se ejecuta siempre, independientemente
de si ocurrió una excepción o no. Se utiliza comúnmente para realizar
tareas de limpieza o liberación de recursos.
try:
# Código que puede generar una excepción
archivo = open("archivo.txt", "r")
# Realizar operaciones con el archivo
except FileNotFoundError:
print("Error: Archivo no encontrado")
finally:
archivo.close() # Cerrar el archivo siempre,
incluso si ocurre una excepción
def funcion():
# Código que puede generar una excepción
personalizada
if condicion:
raise Exception("Descripción del error")
try:
funcion()
except Exception as e:
print(f"Error: {str(e)}")
Importante
Considera los posibles errores que pueden ocurrir en tu
código y utiliza el manejo de excepciones adecuado para
manejarlos de manera apropiada. Esto hará que tus
programas sean más robustos y confiables.
Importante
Salida de datos
Para mostrar información en la pantalla, utilizamos la función print().
Esta función toma uno o más argumentos y los muestra en la consola.
Podemos utilizar la f-string (formateo de cadenas) para incrustar
variables directamente dentro de una cadena de texto.
nombre = "Juan"
edad = 25
Lectura de archivos
Para leer el contenido de un archivo, primero debemos abrirlo utilizando
la función open() en modo de lectura ("r"). Luego, podemos leer el
contenido del archivo utilizando métodos como read() o readlines().
Escritura de archivos
Para escribir datos en un archivo, lo abrimos en modo de escritura ("w")
utilizando la función open(). Si el archivo no existe, se creará
automáticamente. Si el archivo ya existe, su contenido se sobrescribirá.
archivo = open("datos.txt", "w")
archivo.write("Hola, mundo!")
archivo.close()
Importante
Ten en cuenta
Python viene con una amplia biblioteca estándar de módulos
que proporcionan funcionalidades adicionales. Estos
módulos están disponibles sin necesidad de instalarlos por
separado.
Importar módulos
Para utilizar un módulo en nuestro programa, debemos importarlo
utilizando la declaración import. Podemos importar un módulo completo
o funciones específicas de un módulo.
import math
resultado = math.sqrt(25)
print(resultado) # Imprime 5.0
resultado = sqrt(25)
print(resultado) # Imprime 5.0
En este caso, se importa solo la función sqrt() del módulo math, lo que
nos permite utilizarla directamente sin tener que precederla con el
nombre del módulo.
import random
import datetime
fecha_actual = datetime.datetime.now()
print(fecha_actual) # Imprime la fecha y hora
actual
import mi_modulo
# operaciones.py
def sumar(a, b):
return a + b
# utilidades.py
def imprimir_mensaje(mensaje):
print(mensaje)
def obtener_nombre_usuario():
return input("Ingresa tu nombre: ")
import operaciones
import utilidades
resultado = operaciones.sumar(5, 3)
utilidades.imprimir_mensaje(f"El resultado de la
suma es: {resultado}")
nombre = utilidades.obtener_nombre_usuario()
utilidades.imprimir_mensaje(f"Hola, {nombre}!")
modulo1.funcion1()
modulo2.funcion2()