Algunos ejemplos de código para comenzar con la programación básica en Python. Estos ejemplos cubren conceptos como variables, operadores, estructuras de control, funciones, listas, tuplas, diccionarios, filtros, decoradores, etc.
Table of Contents
- Imprimir en pantalla:
- Variables y operadores:
- Estructuras de control – Condicionales:
- Estructuras de control – Bucles:
- Funciones:
- Listas y bucles con listas:
- Trabajo con listas de listas (Listas anidadas):
- Diccionarios:
- Funciones incorporadas útiles:
- Agregar, modificar y eliminar elementos de Listas:
- Uso de bibliotecas externas (ejemplo con la biblioteca random):
- Manejo de excepciones:
- Manejo de excepciones personalizadas:
- Manejo de excepciones con finally:
- Funciones con retorno de valor:
- Trabajo con cadenas:
- Módulos personalizados (crear un archivo .py aparte):
- Comentarios y documentación:
- Tuplas (similar a las listas pero inmutables):
- Operador ternario (forma concisa de escribir una estructura condicional):
- Bucles y control de flujo:
- List comprehensions (construcción concisa de listas):
- Manejo de archivos:
- Funciones lambda (funciones pequeñas y anónimas):
- Diferentes tipos de datos:
- Formato de cadenas:
- Funciones integradas útiles:
- Módulo datetime (trabajar con fechas y horas):
- Manejo de fechas con datetime:
- Uso de f-strings:
- Funciones de cadenas y listas:
- Funciones recursivas (funciones que se llaman a sí mismas):
- Enumeración inversa con enumerate:
- Uso de enumerate con índices personalizados:
- Generadores (creación de secuencias de valores de manera eficiente):
- Uso de map y filter (funciones para transformar y filtrar secuencias):
- Módulo «os» para trabajar con el sistema operativo:
- Argumentos de línea de comandos (acceso a argumentos pasados al script):
- Gestión de archivos JSON:
- Uso de zip para combinar listas:
- Uso de zip para desempaquetar listas:
- Trabajo con conjuntos (sets):
- Módulo math para operaciones matemáticas:
- Decoradores de funciones (para modificar o extender el comportamiento de funciones):
- Expresiones regulares (trabajo con patrones en cadenas):
- Comprensión de conjuntos:
- Expresiones lambda en ordenamiento:
- Uso de collections para contar elementos:
- Trabajo con archivos CSV:
- Uso de itertools para generar combinaciones y permutaciones:
- Módulo random para generar números aleatorios:
- Uso de defaultdict para manejo de diccionarios:
- Uso de time para medir el tiempo de ejecución:
- Manejo de argumentos en funciones (argumentos posicionales y argumentos con nombre):
- Funciones de agregación con functools:
- Uso de any y all para evaluación de condiciones:
- Módulo pickle para serialización de objetos:
- Gestión de rutas y directorios con pathlib:
- Uso de isinstance y issubclass para comprobar tipos:
- Uso de assert para pruebas de aserción:
- Uso de itertools para crear infinitos iterables:
- Uso de itertools.chain para concatenar iterables:
- Uso de functools.partial para crear funciones parciales:
- Uso de collections.namedtuple para crear tuplas con nombres de campos:
- Uso de itertools.groupby para agrupar elementos en un iterable:
- Manejo de codificación y decodificación de bytes:
- Uso de filter con funciones de un solo retorno:
- Uso de collections.Counter para operaciones de conteo:
- Uso de functools.lru_cache para caché de resultados de funciones:
- Uso de map con múltiples iterables:
- Trabajo con números complejos:
- Uso de asyncio para programación asíncrona:
- Uso de metaprogramación para crear clases dinámicamente:
- Uso de contextlib para crear administradores de contexto personalizados:
- Uso de decoradores de clase para modificar el comportamiento de métodos:
- Uso de métodos mágicos para personalizar objetos:
Imprimir en pantalla:
print("Hola, mundo!")
Variables y operadores:
# Declaración de variables
nombre = "Juan"
edad = 25
altura = 1.75
# Operaciones
suma = 5 + 3
resta = 10 - 2
multiplicacion = 4 * 6
division = 15 / 3
modulo = 17 % 4 # Resto de la división
# Concatenación de cadenas
saludo = "Hola, " + nombre
Estructuras de control – Condicionales:
edad = 18
if edad >= 18:
print("Eres mayor de edad")
else:
print("Eres menor de edad")
Estructuras de control – Bucles:
# Bucle while
contador = 0
while contador < 5:
print("Contador:", contador)
contador += 1
# Bucle for
for i in range(5):
print("Valor de i:", i)
Funciones:
# Definición de una función
def saludar(nombre):
print("Hola,", nombre)
# Llamada a la función
saludar("Beastieux")
Listas y bucles con listas:
# Declaración de una lista
frutas = ["cereza", "platanos", "naranja"]
# Acceso a elementos de la lista
print(frutas[0]) # Imprime "cereza"
# Recorriendo la lista con un bucle
for fruta in frutas:
print("Tengo una", fruta)
Trabajo con listas de listas (Listas anidadas):
matriz = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# Acceso a elementos de la matriz
elemento = matriz[1][2] # Obtendría el valor 6
Diccionarios:
# Declaración de un diccionario
persona = {
"nombre": "Miguel",
"edad": 30,
"ciudad": "Perú"
}
# Acceso a valores del diccionario
print(persona["nombre"]) # Imprime "Miguel"
Funciones incorporadas útiles:
# Obtener la longitud de una cadena o lista
longitud = len("Hola, mundo!")
print("Longitud:", longitud) # Imprime 13
# Obtener el máximo y mínimo de una lista de números
numeros = [5, 2, 9, 1, 7]
maximo = max(numeros)
minimo = min(numeros)
# Convertir un número en cadena
numero_str = str(42)
Agregar, modificar y eliminar elementos de Listas:
frutas = ["manzana", "banana", "naranja"]
# Agregar elemento al final de la lista
frutas.append("pera")
# Modificar elemento en la lista
frutas[1] = "kiwi"
# Eliminar elemento de la lista
frutas.remove("manzana")
Uso de bibliotecas externas (ejemplo con la biblioteca random
):
import random
# Generar un número aleatorio entre 1 y 10
numero_aleatorio = random.randint(1, 10)
print("Número aleatorio:", numero_aleatorio)
Manejo de excepciones:
try:
numero = int(input("Ingrese un número: "))
resultado = 10 / numero
print("El resultado es:", resultado)
except ZeroDivisionError:
print("Error: No se puede dividir por cero.")
except ValueError:
print("Error: Ingrese un número válido.")
Manejo de excepciones personalizadas:
class MiError(Exception):
def __init__(self, mensaje):
self.mensaje = mensaje
try:
raise MiError("Este es mi mensaje de error personalizado.")
except MiError as e:
print("Error:", e.mensaje)
Manejo de excepciones con finally
:
try:
resultado = 10 / 0
except ZeroDivisionError:
print("Error: No se puede dividir por cero.")
finally:
print("Este bloque se ejecuta siempre.")
Funciones con retorno de valor:
def suma(a, b):
return a + b
resultado_suma = suma(3, 7)
print("Resultado de la suma:", resultado_suma)
Trabajo con cadenas:
mensaje = "¡Hola, cómo estás?"
# Obtener longitud de una cadena
longitud_mensaje = len(mensaje)
# Convertir a mayúsculas y minúsculas
mayusculas = mensaje.upper()
minusculas = mensaje.lower()
# Buscar una subcadena
posicion = mensaje.find("cómo")
# Reemplazar parte de la cadena
nuevo_mensaje = mensaje.replace("estás", "te encuentras")
Módulos personalizados (crear un archivo .py
aparte):
# En un archivo llamado operaciones.py
def multiplicacion(a, b):
return a * b
# En otro archivo
import operaciones
resultado = operaciones.multiplicacion(4, 5)
Comentarios y documentación:
# Esto es un comentario de una línea
"""
Esto es un comentario
de varias líneas.
"""
def funcion():
"""
Esta función realiza una acción.
Detalles adicionales.
"""
pass
Tuplas (similar a las listas pero inmutables):
coordenadas = (3, 5)
x, y = coordenadas # Desempaquetado de tupla
Operador ternario (forma concisa de escribir una estructura condicional):
edad = 20
mensaje = "Mayor de edad" if edad >= 18 else "Menor de edad"
Bucles y control de flujo:
numeros = [1, 2, 3, 4, 5]
# Bucle for con índice y valor
for indice, valor in enumerate(numeros):
print("Índice:", indice, "Valor:", valor)
# Bucle while con break y continue
contador = 0
while contador < 10:
if contador == 5:
break # Sale del bucle
if contador == 3:
contador += 1
continue # Salta a la siguiente iteración
print("Contador:", contador)
contador += 1
List comprehensions (construcción concisa de listas):
numeros = [1, 2, 3, 4, 5]
cuadrados = [numero ** 2 for numero in numeros]
pares = [numero for numero in numeros if numero % 2 == 0]
Manejo de archivos:
# Escritura en un archivo
with open("archivo.txt", "w") as archivo:
archivo.write("Hola, mundo!")
# Lectura de un archivo
with open("archivo.txt", "r") as archivo:
contenido = archivo.read()
print("Contenido:", contenido)
Funciones lambda (funciones pequeñas y anónimas):
doble = lambda x: x * 2
resultado = doble(5)
Diferentes tipos de datos:
# Conjunto (set)
conjunto = {1, 2, 3, 4, 4, 5}
# Booleanos
verdadero = True
falso = False
Formato de cadenas:
nombre = "Ana"
edad = 28
mensaje = "Mi nombre es {} y tengo {} años.".format(nombre, edad)
Funciones integradas útiles:
# Obtener la suma de una lista de números
suma_total = sum([1, 2, 3, 4])
# Ordenar una lista
numeros = [3, 1, 4, 1, 5, 9, 2, 6]
numeros_ordenados = sorted(numeros)
Módulo datetime (trabajar con fechas y horas):
import datetime
ahora = datetime.datetime.now()
print("Fecha y hora actual:", ahora)
Manejo de fechas con datetime
:
import datetime
fecha_actual = datetime.datetime.now()
# Sumar un día a la fecha actual
nueva_fecha = fecha_actual + datetime.timedelta(days=1)
Uso de f-strings:
nombre = "Carlos"
edad = 35
mensaje = f"Mi nombre es {nombre} y tengo {edad} años."
Funciones de cadenas y listas:
cadena = "Python es genial"
lista = [3, 1, 4, 1, 5]
# Convertir cadena a lista
lista_cadena = list(cadena)
# Convertir lista a cadena
cadena_lista = "".join(lista_cadena)
# Dividir una cadena en una lista
palabras = cadena.split() # Divide por espacios en blanco
Funciones recursivas (funciones que se llaman a sí mismas):
def recursividad(n):
if n == 0:
return 1
else:
return n * recursividad(n - 1)
Enumeración inversa con enumerate
:
numeros = [10, 20, 30, 40, 50]
for indice, valor in enumerate(reversed(numeros)):
print("Índice:", len(numeros) - indice - 1, "Valor:", valor)
Uso de enumerate
con índices personalizados:
numeros = [10, 20, 30, 40, 50]
for indice, valor in enumerate(numeros, start=1):
print("Índice:", indice, "Valor:", valor)
Generadores (creación de secuencias de valores de manera eficiente):
def numeros_pares(n):
for i in range(n):
if i % 2 == 0:
yield i
pares_hasta_10 = numeros_pares(10)
Uso de map
y filter
(funciones para transformar y filtrar secuencias):
numeros = [1, 2, 3, 4, 5]
# Duplicar cada número usando map
duplicados = map(lambda x: x * 2, numeros)
# Filtrar números pares usando filter
pares = filter(lambda x: x % 2 == 0, numeros)
Módulo «os"
para trabajar con el sistema operativo:
import os
# Obtener el directorio actual
directorio_actual = os.getcwd()
# Listar archivos en un directorio
archivos = os.listdir(directorio_actual)
Argumentos de línea de comandos (acceso a argumentos pasados al script):
import sys
argumentos = sys.argv
print("Argumentos:", argumentos)
Gestión de archivos JSON:
import json
datos = {"nombre": "Ana", "edad": 28}
# Escribir datos en un archivo JSON
with open("datos.json", "w") as archivo:
json.dump(datos, archivo)
# Leer datos desde un archivo JSON
with open("datos.json", "r") as archivo:
datos_leidos = json.load(archivo)
Uso de zip
para combinar listas:
nombres = ["Ana", "Juan", "María"]
edades = [28, 35, 22]
# Combinar listas usando zip
personas = list(zip(nombres, edades))
Uso de zip
para desempaquetar listas:
nombres = ["Ana", "Juan", "María"]
edades = [28, 35, 22]
# Desempaquetar listas con zip
for nombre, edad in zip(nombres, edades):
print("Nombre:", nombre, "Edad:", edad)
Trabajo con conjuntos (sets):
conjunto1 = {1, 2, 3, 4, 5}
conjunto2 = {4, 5, 6, 7, 8}
# Unión de conjuntos
union = conjunto1 | conjunto2
# Intersección de conjuntos
interseccion = conjunto1 & conjunto2
# Diferencia de conjuntos
diferencia = conjunto1 - conjunto2
Módulo math
para operaciones matemáticas:
import math
# Raíz cuadrada
raiz = math.sqrt(25)
# Valor absoluto
absoluto = math.fabs(-7)
# Función exponencial
exponencial = math.exp(2)
Decoradores de funciones (para modificar o extender el comportamiento de funciones):
def decorador(funcion):
def wrapper(*args, **kwargs):
print("Antes de llamar a la función")
resultado = funcion(*args, **kwargs)
print("Después de llamar a la función")
return resultado
return wrapper
@decorador
def funcion_decorada():
print("Dentro de la función decorada")
funcion_decorada()
Expresiones regulares (trabajo con patrones en cadenas):
import re
patron = r'\b\w+\b'
texto = "Esto es una prueba de expresiones regulares."
coincidencias = re.findall(patron, texto)
Comprensión de conjuntos:
numeros = [1, 2, 3, 4, 4, 5]
# Crear un conjunto a partir de una lista con comprensión de conjuntos
conjunto_numeros = {numero for numero in numeros}
Expresiones lambda en ordenamiento:
personas = [
{"nombre": "Ana", "edad": 28},
{"nombre": "Juan", "edad": 35},
{"nombre": "María", "edad": 22}
]
# Ordenar personas por edad usando una expresión lambda
personas_ordenadas = sorted(personas, key=lambda x: x["edad"])
Uso de collections
para contar elementos:
from collections import Counter
frutas = ["manzana", "banana", "manzana", "naranja", "banana", "manzana"]
conteo_frutas = Counter(frutas)
# Obtener la cantidad de cada fruta
cantidad_manzanas = conteo_frutas["manzana"]
Trabajo con archivos CSV:
import csv
datos = [
["Nombre", "Edad"],
["Ana", 28],
["Juan", 35],
["María", 22]
]
# Escribir datos en un archivo CSV
with open("datos.csv", "w", newline="") as archivo:
escritor = csv.writer(archivo)
for fila in datos:
escritor.writerow(fila)
# Leer datos desde un archivo CSV
with open("datos.csv", "r") as archivo:
lector = csv.reader(archivo)
for fila in lector:
print(fila)
Uso de itertools
para generar combinaciones y permutaciones:
import itertools
# Generar todas las combinaciones de 2 elementos
combinaciones = itertools.combinations([1, 2, 3], 2)
# Generar todas las permutaciones de 3 elementos
permutaciones = itertools.permutations([1, 2, 3])
Módulo random
para generar números aleatorios:
import random
# Generar un número entero aleatorio entre 1 y 100
numero_aleatorio = random.randint(1, 100)
# Elegir un elemento aleatorio de una lista
elemento_aleatorio = random.choice(["rojo", "verde", "azul"])
Uso de defaultdict
para manejo de diccionarios:
from collections import defaultdict
frutas = ["manzana", "banana", "manzana", "naranja", "banana", "manzana"]
conteo_frutas = defaultdict(int)
for fruta in frutas:
conteo_frutas[fruta] += 1
Uso de time
para medir el tiempo de ejecución:
import time
inicio = time.time()
# Código que deseas medir
fin = time.time()
tiempo_transcurrido = fin - inicio
print("Tiempo transcurrido:", tiempo_transcurrido, "segundos")
Manejo de argumentos en funciones (argumentos posicionales y argumentos con nombre):
def saludar(nombre, edad):
print(f"Hola, me llamo {nombre} y tengo {edad} años.")
saludar("Ana", 28)
Funciones de agregación con functools
:
import functools
numeros = [1, 2, 3, 4, 5]
# Sumar todos los elementos de la lista
suma_total = functools.reduce(lambda x, y: x + y, numeros)
Uso de any
y all
para evaluación de condiciones:
numeros = [10, 5, -3, 0]
# Verificar si algún número es negativo
hay_negativos = any(num < 0 for num in numeros)
# Verificar si todos los números son positivos
todos_positivos = all(num > 0 for num in numeros)
Módulo pickle
para serialización de objetos:
import pickle
datos = {"nombre": "Ana", "edad": 28}
# Guardar datos en un archivo
with open("datos.pkl", "wb") as archivo:
pickle.dump(datos, archivo)
# Cargar datos desde un archivo
with open("datos.pkl", "rb") as archivo:
datos_cargados = pickle.load(archivo)
Gestión de rutas y directorios con pathlib
:
from pathlib import Path
ruta = Path("carpeta/archivo.txt")
# Verificar si la ruta existe
existe = ruta.exists()
# Obtener la extensión del archivo
extension = ruta.suffix
Uso de isinstance
y issubclass
para comprobar tipos:
x = 5
# Verificar si x es un entero
es_entero = isinstance(x, int)
# Verificar si una clase es subclase de otra
class Padre:
pass
class Hijo(Padre):
pass
es_subclase = issubclass(Hijo, Padre)
Uso de assert
para pruebas de aserción:
x = 10
y = 5
assert x > y, "x no es mayor que y"
Uso de itertools
para crear infinitos iterables:
import itertools
# Crear un iterador infinito de números naturales
naturales = itertools.count(start=1)
# Tomar los primeros 5 elementos
primeros_5 = list(itertools.islice(naturales, 5))
Uso de itertools.chain
para concatenar iterables:
iterable1 = [1, 2, 3]
iterable2 = [4, 5, 6]
concatenados = list(itertools.chain(iterable1, iterable2))
Uso de functools.partial
para crear funciones parciales:
import functools
def potencia(base, exponente):
return base ** exponente
cuadrado = functools.partial(potencia, exponente=2)
cubo = functools.partial(potencia, exponente=3)
Uso de collections.namedtuple
para crear tuplas con nombres de campos:
from collections import namedtuple
Persona = namedtuple("Persona", ["nombre", "edad"])
persona1 = Persona(nombre="Ana", edad=28)
Uso de itertools.groupby
para agrupar elementos en un iterable:
datos = [
{"nombre": "Ana", "grupo": "A"},
{"nombre": "Juan", "grupo": "B"},
{"nombre": "María", "grupo": "A"}
]
datos_ordenados = sorted(datos, key=lambda x: x["grupo"])
grupos = itertools.groupby(datos_ordenados, key=lambda x: x["grupo"])
Manejo de codificación y decodificación de bytes:
texto = "¡Hola, mundo!"
# Codificar en bytes
bytes_codificados = texto.encode("utf-8")
# Decodificar bytes a texto
texto_decodificado = bytes_codificados.decode("utf-8")
Uso de filter
con funciones de un solo retorno:
numeros = [1, 2, 3, 4, 5]
# Filtrar números pares usando filter y lambda
pares = filter(lambda x: x % 2 == 0, numeros)
Uso de collections.Counter
para operaciones de conteo:
from collections import Counter
texto = "programación en Python es genial"
conteo_caracteres = Counter(texto)
caracter_mas_comun = conteo_caracteres.most_common(1)[0]
Uso de functools.lru_cache
para caché de resultados de funciones:
import functools
@functools.lru_cache(maxsize=None)
def fib(n):
if n <= 1:
return n
return fib(n - 1) + fib(n - 2)
Uso de map
con múltiples iterables:
numeros1 = [1, 2, 3]
numeros2 = [10, 20, 30]
resultados = map(lambda x, y: x * y, numeros1, numeros2)
Trabajo con números complejos:
numero_complejo = 3 + 4j
parte_real = numero_complejo.real
parte_imaginaria = numero_complejo.imag
modulo = abs(numero_complejo)
Uso de asyncio
para programación asíncrona:
import asyncio
async def tarea():
print("Tarea iniciada")
await asyncio.sleep(2)
print("Tarea completada")
loop = asyncio.get_event_loop()
loop.run_until_complete(tarea())
loop.close()
Uso de metaprogramación para crear clases dinámicamente:
def crear_clase(nombre, atributos):
return type(nombre, (object,), atributos)
MiClase = crear_clase("MiClase", {"x": 5, "y": 10})
objeto = MiClase()
print(objeto.x, objeto.y)
Uso de contextlib
para crear administradores de contexto personalizados:
from contextlib import contextmanager
@contextmanager
def mi_contexto():
print("Iniciando contexto")
yield
print("Finalizando contexto")
with mi_contexto():
print("Dentro del contexto")
Uso de decoradores de clase para modificar el comportamiento de métodos:
class DecoradorClase:
def __init__(self, funcion):
self.funcion = funcion
def __call__(self, *args, **kwargs):
print("Antes de la función")
resultado = self.funcion(*args, **kwargs)
print("Después de la función")
return resultado
@DecoradorClase
def funcion_decorada():
print("Dentro de la función decorada")
funcion_decorada()
Uso de métodos mágicos para personalizar objetos:
class MiClase:
def __init__(self, x):
self.x = x
def __str__(self):
return f"MiClase con x = {self.x}"
def __add__(self, otro):
return MiClase(self.x + otro.x)
objeto1 = MiClase(5)
objeto2 = MiClase(10)
resultado = objeto1 + objeto2
print(resultado)
Pueder ir al artículo principal:
Códigos Sencillos hechos en Python