Curso
La mejor forma de aprender Python es ganar soltura con repetición, experimentación y resolución de problemas. Por eso el enfoque de «aprender haciendo» está en el centro de la formación de programadores eficaces.
Escribiendo código, cometiendo errores y corrigiéndolos es como de verdad desarrollas habilidades.
En este artículo trabajaremos una serie estructurada de ejercicios de Python diseñados específicamente para principiantes. Empezamos con variables sencillas y avanzamos poco a poco hacia funciones, estructuras de datos y pequeños proyectos con datos.
Antes de seguir leyendo, aquí tienes un reto: intenta resolver los tres primeros ejercicios ahora mismo, sin mirar las explicaciones. Aunque te atasques, el intento es donde más se aprende.
Si prefieres una experiencia más guiada, los cursos de DataCamp comprueban tu sintaxis y tu lógica paso a paso. Esto evita que pequeños fallos bloqueen tu progreso y es especialmente útil al empezar. Un buen punto de partida es el curso Introduction to Python.
Primeros pasos con los ejercicios de Python
Antes de lanzarte a los ejercicios, necesitas un entorno básico para escribir y ejecutar código Python. Por suerte, empezar es más fácil que nunca.
Preparación
Para ejecutar Python en local, instala un editor de código amigable para principiantes como Visual Studio Code.
Una configuración típica sería así:
-
Instala Python desde la web oficial
-
Instala Visual Studio Code
-
Añade la extensión de Python en VS Code
-
Crea un nuevo archivo
.pyy empieza a programar

VS Code es un buen sitio para empezar a programar: es de código abierto y gratuito. Visita su página de descarga para bajarlo e instálalo cuando termine la descarga.
Si prefieres no instalar nada, puedes usar DataLab, un entorno en el navegador que te permite ejecutar código Python (y SQL) al instante. Es ideal para seguir tutoriales, probar fragmentos y experimentar sin preocuparte por la configuración.
Cómo usar estos ejercicios
Para maximizar tu aprendizaje, cada ejercicio está pensado para que lo intentes antes de leer la solución o la explicación.
La mejor manera de sacarles partido es:
- Dedica al menos 15 minutos a intentar una solución por tu cuenta
- Escribe el programa completo, aunque te parezca repetitivo
- Consulta las respuestas solo después de haberlo intentado
Tienes un solucionario completo de todos los ejercicios en este cuaderno de DataLab enlazado. Así podrás comparar tu enfoque con una solución que funciona y entender alternativas para resolver el mismo problema.

Ejercicios de Python sobre variables, entrada y salida
Empecemos con ejercicios básicos centrados en los bloques fundamentales: guardar valores, leer entradas del usuario e imprimir resultados en pantalla.
El saludo personalizado
Para empezar, veamos un ejercicio sencillo de Python que imprime un mensaje personalizado.
Ejercicio
Escribe un programa que:
-
Pida al usuario su nombre usando
input() -
Pida al usuario su edad usando
input() -
Imprima un saludo usando cadenas formateadas
-
Calcule el año en que el usuario cumple 100
Antes de escribir código, ayuda pensar en cómo fluye la información por un programa sencillo como este. El usuario proporciona texto sin procesar, Python lo guarda en variables y luego tú transformas esos valores en algo con sentido.
Este ejercicio refleja muchos programas reales, donde la entrada del usuario rara vez es usable tal cual y primero hay que validarla o convertirla.
Código inicial
Aquí tienes un código inicial para guiarte:
# Task: Ask for the user's name
name = input("Enter your name: ")
# Task: Ask for the user's age (note: input() returns a string)
age_str = input("Enter your age: ")
# Task: Convert age_str to an int
# age = ...
# Task: Calculate the year the user turns 100
# Tip: you'll need the current year
# current_year = ...
# year_turn_100 = ...
# Task: Print a personalized message using an f-string
# print(...)
Conceptos clave practicados
-
input()siempre devuelve una cadena -
Convertir cadenas a enteros con
int() -
Aritmética básica con números
-
Formato de cadenas con f-strings
Este ejercicio te enseña que a menudo hay que transformar la entrada del usuario antes de usarla en cálculos.
El conversor de temperatura
Apliquemos tus habilidades de Python a unas conversiones de unidades básicas.
Ejercicio
Escribe un programa que:
-
Pida al usuario una temperatura en grados Celsius
-
La convierta a Fahrenheit con la fórmula:
F = (C × 9/5) + 32 -
Imprima la temperatura convertida
Código inicial
Aquí tienes un código inicial para guiarte:
# Task: Ask the user for a Celsius temperature
celsius_str = input("Temperature in Celsius: ")
# Task: Convert the input to a float
# celsius = ...
# Task: Apply the conversion formula
# fahrenheit = ...
# Task: Print the result (consider formatting to 1–2 decimal places)
# print(...)
Conceptos clave practicados
-
Números de coma flotante
-
Expresiones aritméticas
-
Conversión de tipo con
float()
Este ejercicio refuerza que no todas las entradas numéricas son enteras y que Python maneja decimales de forma natural.
El rompecabezas del intercambio
Este ejercicio parece trivial, pero es común que al principio se piense en las variables como cajas que hay que vaciar y rellenar paso a paso. Veamos cómo podemos intercambiar valores en Python.
Ejercicio
Tienes dos variables: a = 5 y b = 10. Intercambia sus valores sin reasignarlos manualmente valor a valor.
Python permite una forma más expresiva de pensar la asignación, donde los valores se pueden desempaquetar y reasignar en una sola operación.
Código inicial
Aquí tienes un código inicial para guiarte:
a = 5
b = 10
# Task: Swap a and b
# Hint: Try a temporary variable first.
# Then try the Pythonic approach (tuple unpacking).
# Task: Print the swapped values to verify
# print("a:", a)
# print("b:", b)
Conceptos clave practicados
- Asignación de variables
- Variables temporales vs desempaquetado de tuplas
Esto introduce el desempaquetado de tuplas, una característica que hace Python conciso y expresivo.
Para más información sobre lo básico, echa un vistazo a nuestra chuleta de Python.
Ejercicios de Python sobre flujo de control y lógica
El flujo de control permite que tus programas tomen decisiones y repitan acciones según condiciones.
El comprobador par o impar
Un uso común del operador módulo es comprobar si un número es par o impar. Probémoslo.
Ejercicio
Escribe un programa que:
-
Pida al usuario un número
-
Use el operador módulo
% -
Imprima si el número es par o impar
Código inicial
Aquí tienes un código inicial para guiarte:
# Task: Ask the user for a number
num_str = input("Enter a whole number: ")
# Task: Convert to int
# num = ...
# Task: Use modulo (%) to decide even vs odd
# if ...:
# print("Even")
# else:
# print("Odd")
Conceptos clave practicados
-
Operador módulo
-
Lógica booleana
Suele ser el primer ejemplo donde se ve cómo las condiciones controlan el comportamiento del programa.
El clásico reto FizzBuzz
Uno de los retos de programación más comunes es FizzBuzz. Veamos en qué consiste.
Ejercicio
Imprime los números del 1 al 100 con estas reglas:
-
Los múltiplos de 3 imprimen
Fizz -
Los múltiplos de 5 imprimen
Buzz -
Los múltiplos de ambos imprimen
FizzBuzz
Este ejercicio te entrena a pensar con árboles de decisión y casos límite, una habilidad crucial al escribir programas reales.
Código inicial
Aquí tienes un código inicial para guiarte:
# Task: Loop from 1 to 100
for n in range(1, 101):
# Task: Check multiples of 3 AND 5 first
# if ...:
# print("FizzBuzz")
# Task: Then multiples of 3
# elif ...:
# print("Fizz")
# Task: Then multiples of 5
# elif ...:
# print("Buzz")
# Task: Otherwise, print the number
# else:
# print(n)
pass
Conceptos clave practicados
-
Bucles
for -
Orden de las condiciones
-
Operadores lógicos
Este ejercicio es casi un rito de iniciación y se usa para enseñar pensamiento estructurado en el flujo de control. Lee más sobre bucles en nuestro tutorial de bucles en Python.
El juego de adivinar
Este ejercicio introduce programas interactivos que responden dinámicamente a la entrada del usuario.
Ejercicio
Escribe un programa que:
-
Genere un número aleatorio (importando
random) -
Use un bucle
whilepara pedir intentos -
Imprima "Too high" o "Too low" tras cada intento
-
Se detenga cuando se acierte el número
Suele ser el primer ejercicio donde se experimenta un programa interactivo en lugar de lineal. A diferencia de scripts que van de arriba a abajo y terminan, este sigue ejecutándose hasta que se cumple una condición.
El salto conceptual clave aquí es entender la terminación de bucles.
Código inicial
Aquí tienes un código inicial para guiarte:
import random
# Task: Pick a random number in a reasonable range
# target = random.randint(1, 100)
# Task: Use a while loop to keep asking until correct
# while ...:
# guess_str = input("Your guess (1–100): ")
# # guess = ...
# # if guess > target:
# # print("Too high")
# # elif guess < target:
# # print("Too low")
# # else:
# # print("Correct!")
# # break
Conceptos clave practicados
-
Importación de módulos (
random) -
Bucles
while -
Condiciones de salida de bucles
Ejercicios de Python sobre listas, bucles e iteración
Las listas te permiten trabajar con colecciones de valores, y los bucles procesarlas de forma eficiente.
La suma de una lista
Este patrón aparece a menudo en flujos de trabajo de procesamiento y análisis de datos.
Ejercicio
Escribe un programa que sume todos los números de una lista sin usar la función integrada sum(). El propio programa debe realizar la lógica de suma explícitamente en un bucle, en lugar de apoyarse en otras utilidades.
Código inicial
Aquí tienes un código inicial para guiarte:
numbers = [3, 7, 2, 9, 4]
# Task: Create an accumulator variable
# total = ...
# Task: Loop through numbers and add each value to total
# for ...:
# ...
# Task: Print the final total
# print(total)
Conceptos clave practicados
-
Inicializar una variable acumuladora
-
Iterar con bucles
for -
Actualizar valores paso a paso
Para más ejemplos sobre listas, consulta nuestra guía sobre las preguntas más comunes sobre listas en Python.
Encontrar el número máximo
El siguiente ejercicio es parecido al anterior, pero funciona de forma diferente dentro del bucle. Refuerza el pensamiento algorítmico y refleja cómo funcionan internamente funciones integradas.
Ejercicio
Reta al usuario a encontrar el mayor número de una lista sin usar max().
Código inicial
Aquí tienes un código inicial para guiarte:
numbers = [12, 5, 27, 3, 19]
# Task: Initialize current_max using the first element
# current_max = numbers[0]
# Task: Loop through the remaining elements and update current_max
# for ...:
# if ...:
# current_max = ...
# Task: Print the largest number
# print(current_max)
Conceptos clave practicados
- Lógica de comparación
- Seguimiento de estado durante la iteración
Eliminar duplicados
Los datos del mundo real son desordenados y, a menudo, incluyen duplicados. Este ejercicio te prepara para tareas de limpieza de datos.
Ejercicio
Convierte una lista con elementos duplicados en una nueva lista con solo elementos únicos.
A primera vista puede parecer simple, pero introduce la idea de registrar lo que ya has visto. Es un concepto fundamental en el procesamiento de datos, donde identificar y eliminar registros duplicados es habitual.
Código inicial
Aquí tienes un código inicial para guiarte:
data = ["apple", "banana", "apple", "orange", "banana", "kiwi"]
# Task: Create a new list for unique items
# unique = []
# Task: Loop through data and append items you haven't seen yet
# for item in data:
# if ...:
# ...
# Task: Print or return the unique list
# print(unique)
Conceptos clave practicados
-
Comprobaciones de pertenencia con
in -
Construcción de nuevas listas
-
Comprender la unicidad de los datos
Ejercicios de Python sobre diccionarios y manejo de cadenas
Los diccionarios y las cadenas son esenciales para organizar y transformar datos textuales. Veamos cómo manejarlos.
El contador de frecuencias de caracteres
Este ejercicio te enseña a construir tablas de frecuencias, una tarea común en análisis de datos.
Ejercicio
Toma una cadena de entrada y devuelve un diccionario que cuente cuántas veces aparece cada carácter.
Este ejercicio supone un gran paso conceptual: construir una estructura de datos dinámicamente mientras el programa se ejecuta. En lugar de trabajar con una lista o diccionario predefinidos, creas y actualizas entradas en función de los datos que vas encontrando.
Código inicial
Aquí tienes un código inicial para guiarte:
text = input("Enter some text: ")
# Task: Create an empty dictionary
# counts = {}
# Task: Loop over each character and update counts
# for ch in text:
# # Option A: counts[ch] = counts.get(ch, 0) + 1
# # Option B: if ch in counts: ... else: ...
# pass
# Task: Print the frequency table
# print(counts)
Conceptos clave practicados
-
Diccionarios
-
Método
.get() -
Inicialización condicional
La agenda telefónica sencilla
Este ejercicio toca la lógica de diccionarios, base para entender más adelante las estructuras de datos tabulares.
Ejercicio
Crea un programa que guarde nombres y números en un diccionario y permita buscar por nombre.
Este ejercicio introduce la idea de usar un programa como herramienta de consulta persistente en vez de un cálculo puntual. Estás modelando una versión simplificada de cómo muchas aplicaciones guardan y recuperan información.
Código inicial
Aquí tienes un código inicial para guiarte:
phonebook = {
# "Alice": "9123 4567",
# "Ben": "9876 5432",
}
# Task: (Optional) add entries via input()
# name = input("Name to add: ")
# number = input("Number to add: ")
# phonebook[name] = number
# Task: Search loop (one lookup is fine for a start)
query = input("Search name: ")
# Task: Print the number if found, otherwise print a friendly message
# if ...:
# print(...)
# else:
# print("Not found")
Conceptos clave practicados
- Búsquedas en diccionarios
- Relaciones clave-valor
Si quieres profundizar en diccionarios, te recomiendo nuestra guía completa sobre los métodos de diccionario en Python.
Comprobador de palíndromos
Este ejercicio combina procesamiento de texto con comparación lógica a través de palíndromos.
Ejercicio
Un palíndromo es una palabra, frase, número o secuencia de caracteres que se lee igual de izquierda a derecha que de derecha a izquierda. Crea un script que compruebe si una cadena cumple esta condición (ignorando mayúsculas y espacios).
Código inicial
Aquí tienes un código inicial para guiarte:
text = input("Enter a word or phrase: ")
# Task: Normalize (lowercase + remove spaces)
# normalized = ...
# Task: Reverse using slicing
# reversed_text = ...
# Task: Compare and print a result message
# if ...:
# print("Palindrome")
# else:
# print("Not a palindrome")
Conceptos clave practicados
-
Métodos de cadena (
lower(),replace()) -
Rebanado de cadenas (
[::-1])
Ejercicios de Python sobre funciones y modularidad
Las funciones te permiten escribir código reutilizable y organizado en lugar de repetir lógica.
La calculadora de factoriales
La calculadora de factoriales te ayudará a entender los valores de retorno, fundamentales para construir programas grandes.
Ejercicio
Define una función que reciba un entero y devuelva su factorial usando un bucle.
La distinción entre imprimir un valor y devolver un valor es clave. Devolver resultados permite componer tu función con otro código, esencial cuando los programas crecen más allá de un solo archivo.
Código inicial
Aquí tienes un código inicial para guiarte:
def factorial(n: int) -> int:
"""Return n! (factorial of n) using a loop."""
# Task: Decide how to handle n < 0
# Task: Initialize result
# result = ...
# Task: Multiply result by each integer from 1 to n
# for ...:
# ...
# Task: Return the computed factorial
# return result
pass
# Optional quick test
# print(factorial(5)) # expected: 120
Conceptos clave practicados
- Definición de funciones
- Cálculos basados en bucles
- Devolver valores vs imprimir
Lee más sobre funciones en nuestro tutorial de funciones en Python.
Validador de números primos
Ahora veremos una función que valida números primos. Te ayudará a crear funciones reutilizables.
Ejercicio
Escribe una función que devuelva True si un número es primo y False en caso contrario.
Comprobar primos también muestra cómo las funciones encapsulan lógica de forma limpia. Una vez escrita, puedes reutilizarla sin conocer sus detalles internos.
Código inicial
Aquí tienes un código inicial para guiarte:
def is_prime(n: int) -> bool:
"""Return True if n is prime, otherwise False."""
# Task: Handle small cases (n <= 1)
# Task: Check divisibility from 2 up to an appropriate limit
# for ...:
# if ...:
# return False
# Task: If no divisors found, return True
# return True
pass
# Optional quick tests
# print(is_prime(2)) # expected: True
# print(is_prime(15)) # expected: False
Conceptos clave practicados
- Iteración en bucle
- Devoluciones tempranas
- Eficiencia lógica
Impresor flexible de argumentos
Esto introduce firmas de funciones avanzadas usadas en muchas librerías de Python.
Ejercicio
Crea una función que acepte cualquier número de argumentos usando *args y los imprima uno por uno.
Este ejercicio te expone a una de las características más flexibles de Python: los argumentos de longitud variable. Te hace pasar de entradas fijas a funciones que se adaptan a distintos patrones de uso.
Entender *args facilita leer y usar librerías reales de Python, donde a menudo las funciones aceptan un número flexible de parámetros por comodidad y extensibilidad.
Código inicial
Aquí tienes un código inicial para guiarte:
def print_args(*args) -> None:
"""Print each positional argument on its own line."""
# Task: Loop over args and print each one
# for ...:
# print(...)
pass
# Optional quick test
# print_args("hello", 42, True)
Conceptos clave practicados
- Argumentos de longitud variable
- Flexibilidad de funciones
Aplicar tus habilidades de Python con proyectos guiados
Los ejercicios construyen habilidades, pero los proyectos las convierten en confianza.
Investigando películas de Netflix

El proyecto guiado Investigating Netflix Movies plantea una pregunta en apariencia simple: ¿las películas se están acortando con el tiempo? Para responderla, trabajarás con un conjunto de datos real de títulos de Netflix y transformarás filas en bruto en una idea clara y visual.
Lo potente de este proyecto es que hace de puente entre los fundamentos de Python para principiantes y el análisis de datos aplicado. Verás cómo la lógica sencilla escala cuando se combina con las herramientas adecuadas, y todo sin instalar nada en local.
El Dr. Semmelweis y el descubrimiento del lavado de manos

El Dr. Semmelweis and the Importance of Handwashing te pone en la piel de un analista que investiga un problema histórico real. A mediados del siglo XIX, el Dr. Ignaz Semmelweis observó una mortalidad inusualmente alta en una sala respecto a otra, pero no tenía herramientas computacionales para demostrar el porqué.
Con registros históricos, analizarás datos de mortalidad antes y después de introducir el lavado de manos. El proyecto se centra en manipular datos tabulares con pandas, calcular tasas y comparar promedios a lo largo del tiempo.
Explorando el mercado de Airbnb en Nueva York

En el proyecto Exploring Airbnb Market Trends te enfrentas a un escenario muy cercano al trabajo analítico real: datos sucios e inconsistentes que requieren bastante limpieza antes de poder analizarlos en condiciones.
El conjunto de datos contiene anuncios con precios guardados como cadenas, puntuaciones de reseñas ausentes y formatos inconsistentes.
Tu tarea principal es limpiar y estandarizar los datos. El proyecto refuerza la idea de que la preparación de datos no es un trámite previo, sino una habilidad analítica clave. A menudo, la mayor parte del tiempo de los profesionales de datos se dedica a limpiar, y este proyecto es un gran punto de control práctico para esa competencia.
Conclusión
Has empezado con variables simples y entrada de usuario, has pasado por flujo de control, estructuras de datos y funciones, y por último lo has aplicado todo en proyectos guiados. Estos ejercicios deberían haberte dado una buena idea de cómo se usa Python en entornos reales.
Tu siguiente paso natural es un aprendizaje estructurado. La práctica constante, unida a una instrucción guiada, es la vía más rápida para convertir ejercicios en dominio. Te recomiendo inscribirte en nuestros itinerarios Python Programming o Data Scientist para empezar.
Preguntas frecuentes sobre ejercicios de Python
¿Cuál es la mejor plataforma para practicar retos de programación en Python?
Las mejores plataformas combinan práctica con código y feedback estructurado. DataCamp es excelente para práctica guiada porque ofrece programación en el navegador (sin instalación), feedback instantáneo en los ejercicios, itinerarios de habilidades y de carrera, y proyectos guiados con datos reales.
¿Cómo puedo usar eficazmente la repetición espaciada para aprender Python?
La repetición espaciada funciona mejor aplicada a conceptos, no solo a la sintaxis. En lugar de releer apuntes una y otra vez, vuelve a las mismas ideas mediante ejercicios cada vez más difíciles con el paso del tiempo.
¿Cuáles son algunos proyectos avanzados de Python para principiantes?
Buenos ejemplos de proyectos avanzados incluyen crear una app de tareas en la línea de comandos con persistencia en archivos, analizar un CSV con pandas y visualizaciones básicas, o crear un pequeño cliente de API que obtenga y procese datos de un endpoint público.
Soy Austin, bloguero y escritor técnico con años de experiencia como científico de datos y analista de datos en el sector sanitario. Empecé mi andadura tecnológica con una formación en biología, y ahora ayudo a otros a hacer la misma transición a través de mi blog tecnológico. Mi pasión por la tecnología me ha llevado a escribir para decenas de empresas de SaaS, inspirando a otros y compartiendo mis experiencias.

