¿Ya dominas lo básico? Un curso estructurado de Python es la vía rápida para dar el salto.
Ver cursos de Python en UdemyEnlace de afiliado. No te cuesta nada extra.
- 01Preparar el entorno (lo que necesitas)
- 02Variables y print()
- 03Condicionales (sentencias if)
- 04Bucles (sentencias for)
- 05Tu primera función
- 06Trabajar con listas
- 07Trabajar con diccionarios (dict)
- 08Bucles (sentencias while)
- 09Trabajar con cadenas de texto
- 10Introducción a las clases (programación orientada a objetos)
- 11Gestión de errores (try...except)
- 12Comprensiones de lista
- 13Generadores y yield
- 14Fundamentos del manejo de archivos
- 15La sentencia match (el switch de Python)
- 16La expresión condicional (operador ternario)
- 17Herencia (extender una clase)
- 18Escribir comentarios
- 19Operadores lógicos (and, or, not)
- 20Constantes (valores que se acuerda no cambiar)
- 21Dividir y unir cadenas (split, join)
- 22Escribir código seguro frente a None
- 23Buscar en una lista (in y encontrar la primera coincidencia)
- 24Transformar una lista con map()
- 25Listas bidimensionales (datos en forma de tabla)
- 26Crear una clase de excepción propia
- 27Argumentos por defecto (valores iniciales de los parámetros)
- 28Trabajar con conjuntos (set)
- 29Comprobar con assert (tu primer paso hacia las pruebas)
- 30Funciones de orden superior (pasar una función como argumento)
- 31Pilas y colas (estructuras de datos básicas)
- 32Fundamentos de la conversión de tipos
- 33Introducción a las expresiones regulares
- 34El algoritmo de búsqueda binaria
- 35Construir un cifrado César (desplazar letras)
- 36Entender cómo funciona la ordenación de burbuja
- 37Construir y mostrar fechas (año, mes y día)
- 38Escribir varios casos de prueba juntos
- 39Acelerar cálculos con memoización (caché)
- 40Normalizar cadenas (strip, unificar mayúsculas)
- 41Copia superficial frente a copia profunda
- 42Fundamentos de Enum (tipos enumerados)
- 43Aplanar una lista
- 44Invertir una cadena y detectar palíndromos
- 45Emparejar dos listas (la operación zip)
- 46Redondear números (floor, ceil, round)
- 47Cadenas de varias líneas (comillas triples)
- 48Funciones que devuelven varios valores (tuplas)
- 49Calcular el MCD y el MCM (algoritmo de Euclides)
- 50Dar formato a números (rellenar dígitos, decimales)
- 51Lógica de limpieza con try/except/finally
- 52Escribir funciones que no dependen del tipo
- 53Fundamentos de la sentencia with (gestores de contexto)
- 54Generar números aleatorios
- 55Operadores a nivel de bits (AND, OR, XOR, desplazamientos)
- 56Variables de clase y fundamentos de @staticmethod
- 57Esperar un tiempo determinado (time.sleep)
- 58Cuidado con los errores de redondeo en coma flotante
- 59Fundamentos de las anotaciones de tipo
- 60FizzBuzz (el ejercicio clásico)
- 61Comprobar si un número es primo
- 62Operaciones con conjuntos (unión, intersección, diferencia)
- 63Convertir entre bases numéricas (binario, hexadecimal)
- 64Comprobar si los paréntesis están equilibrados (aplicación de pilas)
- 65Comprobar si dos palabras son anagramas
- 66Comprobar si un año es bisiesto
- 67Convertir temperaturas (Celsius a Fahrenheit)
- 68Descomposición en factores primos
- 69[Aplicado] Construye una herramienta de cuentas domésticas
Construir un cifrado César (desplazar letras)
En esta lección implementarás el cifrado César, un cifrado clásico, como práctica de manipulación de cadenas con códigos de carácter. Está pensada para quien busca «cifrado en Python» o «ord y chr en Python».
El cifrado César es un cifrado sencillo, que se remonta a la antigua Roma, en el que cada letra se sustituye desplazándola un número fijo de posiciones en el alfabeto. Piensa en ese juego de la infancia de correr el abecedario unas letras para hablar «en clave». Se implementa convirtiendo un carácter en número (su código) con ord(), haciendo la aritmética sobre ese número y volviendo a convertirlo en carácter con chr().
El código de ejemplo usa .isalpha() para comprobar si un carácter es una letra y solo desplaza el código en ese caso. El detalle clave es el % 26, que mantiene el resultado dentro del rango de 26 letras e implementa la «vuelta al principio» por la que la Z regresa a la A. Los caracteres que no son letras (espacios, signos de puntuación) pasan sin cambios.
Es sencillo y fácil de romper comparado con la criptografía moderna, pero resulta un tema introductorio muy accesible para practicar la operación básica de hacer cuentas con códigos de carácter. Lo que más suele confundir al empezar es que las mayúsculas y las minúsculas tienen códigos base distintos: tratar ambas exige un poco de cuidado adicional.
Como puerta de entrada a la criptografía moderna, merece la pena experimentar el mecanismo de primera mano. La idea de «tratar un carácter como un número y operar con él» es también la base para aprender después técnicas criptográficas más avanzadas.
💡 El motor de Python puede tardar unos segundos en cargarse la primera vez que ejecutas código.
