Terminas el tutorial. Escribes cada línea, ejecutas cada ejemplo, ves que todo funciona. Luego, abres un editor en blanco para crear algo propio... y no se te ocurre nada. Ni una sola idea.
Casi todos los principiantes caen en la trampa de los tutoriales (normalmente justo después de su primer curso de Python). Puedes pasarte el día entero leyendo sobre bucles for, pero en cuanto nadie te dice qué escribir, tu cerebro se bloquea.
Saber cómo se ve el código y escribirlo tú mismo son dos habilidades totalmente distintas. La única forma de pasar de una a otra es creando cosas. Por tu cuenta.
Y no, no hace falta que sea algo útil. No vas a lanzar una aplicación al mercado ni a colaborar en proyectos de código abierto. Solo necesitas programas pequeños y sencillos que funcionen —uno tras otro— hasta que tu cerebro deje de bloquearse.
Para eso sirve este artículo. A continuación, encontrarás 13 proyectos sencillos en Python; puedes terminar cada uno en un plazo de entre 10 minutos y una hora. Cada uno te enseñará una o dos cosas, no más. Y todos terminan con un archivo que funciona en tu ordenador, escrito por ti.
¿Aún no te sientes listo para empezar a programar? ¡No te preocupes! Todo gran viaje comienza con los fundamentos. Aprende los conceptos básicos de informática y construye una base sólida antes de dar el siguiente paso.
¿Por qué programar en lugar de ver tutoriales?
Porque los tutoriales te dan la sensación de estar aprendiendo, pero en realidad piensan por ti. Crear tus propios proyectos te obliga a decidir a ti. Tienes que nombrar las variables, elegir el bucle adecuado y averiguar por qué tu código imprimió None en lugar del número que querías.
Además, los proyectos pequeños resuelven el problema de la motivación. Un proyecto de dos semanas suena impresionante, hasta que te estancas y lo abandonas para siempre. Un proyecto de 30 minutos se termina hoy. Consigues un archivo que funciona, una pequeña victoria, y esa victoria es precisamente lo que te motivará a abrir el editor mañana otra vez.

1. Juego de adivinar el número
El clásico. El ordenador elige un número entre 1 and 100, tú intentas adivinarlo y el programa te dice si es "demasiado alto" o "demasiado bajo" hasta que aciertas. El primer programa real de la mayoría de los programadores, y con razón.
import random
secret = random.randint(1, 100)
guesses = 0
while True:
guess = int(input("Guess a number (1-100): "))
guesses += 1
if guess < secret:
print("Too low")
elif guess > secret:
print("Too high")
else:
print(f"Got it in {guesses} guesses")
break
Lo que aprenderás: bucles while, condicionales, el módulo random y cómo convertir una entrada de texto en un número. Cuando funcione, añade un límite máximo de intentos para que el juego termine si no lo consigues a tiempo.
2. Generador de Mad Libs (historias locas)
Pídele al usuario unas cuantas palabras (un sustantivo, un verbo, un adjetivo), colócalas dentro de una frase absurda e imprime el resultado. Diez minutos de principio a fin.
noun = input("Noun: ")
verb = input("Verb: ")
adjective = input("Adjective: ")
place = input("A place: ")
story = f"Yesterday I went to the {place} and saw a {adjective} {noun} that started to {verb}."
print(story)
3. Simulador de dados
Lanza un dado. Lanza dos. Lanza un dado de 20 caras para una noche de juegos de mesa. Dos líneas de lógica y lo que quieras añadir a su alrededor.
import random
def roll(sides=6, count=1):
return [random.randint(1, sides) for _ in range(count)]
print(roll(6, 2)) # rolls two six-sided dice
print(roll(20)) # rolls one d20
Lo que aprenderás: funciones con valores por defecto, comprensiones de listas (list comprehensions) y cómo llamar a la misma función con diferentes argumentos. Cuando funcione, añade un pequeño menú para que el usuario elija el número de caras y de dados al ejecutarlo.
4. Calculadora sencilla
Sumar, restar, multiplicar, dividir. Dos números, un operador. Sí, ya existen las calculadoras. Ese no es el objetivo. El objetivo es conectar las piezas por ti mismo y darte cuenta de lo que olvidaste la primera vez.
def calc(a, b, op):
if op == "+": return a + b
if op == "-": return a - b
if op == "*": return a * b
if op == "/":
if b == 0:
return "Can't divide by zero"
return a / b
a = float(input("First number: "))
op = input("Operator (+, -, *, /): ")
b = float(input("Second number: "))
print(calc(a, b, op))
Lo que aprenderás: a escribir una función, bifurcaciones con if y cómo manejar ese caso límite tan problemático (la división por cero). ¿Quieres un reto? Añade operaciones encadenadas.
5. Piedra, papel o tijera
Tú eliges una opción, el ordenador elige otra y las reglas deciden quién gana. Es ideal para practicar un bucle de juego sencillo y para familiarizarse con el uso de un diccionario como tabla de consulta.
import random
options = ["rock", "paper", "scissors"]
wins_against = {"rock": "scissors", "paper": "rock", "scissors": "paper"}
you = input("Pick rock, paper, or scissors: ").lower()
cpu = random.choice(options)
print(f"Computer picked {cpu}.")
if you == cpu:
print("Tie")
elif wins_against[you] == cpu:
print("You win")
else:
print("Computer wins")
Lo que aprenderás: diccionarios para búsquedas rápidas, random.choice y comparación de cadenas de texto. Envuélvelo en un bucle while y lleva la cuenta de la puntuación de cada ronda: habrás creado un pequeño juego en una sola tarde.
6. Generador de contraseñas
Crea una contraseña aleatoria de N caracteres usando letras, números y símbolos. Útil, fácil y listo en 15 minutos. El tipo de herramienta que probablemente querrás conservar.
import random
import string
def make_password(length=12):
pool = string.ascii_letters + string.digits + string.punctuation
return "".join(random.choice(pool) for _ in range(length))
print(make_password(16))
Lo que aprenderás: el módulo string, cómo unir caracteres en una sola cadena y cómo extraer caracteres aleatorios de un conjunto. Añade una opción para omitir símbolos, ideal para esos sistemas que no admiten signos de puntuación (y hay más de los que crees).
7. Lista de tareas en la terminal
Un menú sencillo para añadir, listar y eliminar tareas directamente en la terminal. Sin bases de datos ni configuraciones complejas, solo una lista de Python que existe hasta que cierras el programa. Más que suficiente para aprender.
todos = []
while True:
cmd = input("Command (add/list/remove/quit): ")
if cmd == "add":
todos.append(input("Task: "))
elif cmd == "list":
for i, t in enumerate(todos, 1):
print(f"{i}. {t}")
elif cmd == "remove":
idx = int(input("Index to remove: ")) - 1
if 0 <= idx < len(todos):
todos.pop(idx)
elif cmd == "quit":
break
Lo que aprenderás: a crear un programa basado en menús, modificar listas, usar enumerate y el pequeño truco para que la numeración empiece en 1 en lugar de 0. En la siguiente versión, guarda tus tareas en un archivo de texto para que no se borren al cerrar el programa. Ahí es cuando empezará a parecer una aplicación de verdad.
Coddy convierte la práctica de Python en un hábito diario con rachas gamificadas, puntos de experiencia (XP) y lecciones breves que te motivarán a abrir la aplicación incluso en los días con menos ganas.
8. Contador de palabras y caracteres
Pega un texto y obtén el número de palabras, de caracteres y la palabra más frecuente. Muy útil cuando tienes que escribir con límites estrictos de palabras (y te darás cuenta de que abundan en cuanto empieces a fijarte).
from collections import Counter
text = input("Paste your text: ")
words = text.split()
chars = len(text)
most_common = Counter(words).most_common(1)
print(f"Words: {len(words)}")
print(f"Characters: {chars}")
print(f"Most common word: {most_common[0][0]} ({most_common[0][1]} times)")
Lo que aprenderás: el módulo collections, el método .split() y cómo leer los valores que devuelve Counter. Intenta omitir palabras cortas (como preposiciones o artículos) para obtener mejores resultados; de lo contrario, la palabra más común siempre será "el" o "y", lo cual no aporta mucha información.
9. Calculadora de propinas
El total de la cuenta, el porcentaje de propina y la división entre los comensales. El tipo de herramienta sencilla que acabarás usando dentro de unos años, mucho después de haber olvidado que la programaste tú mismo.
bill = float(input("Bill total: "))
tip_pct = float(input("Tip percentage (e.g., 18): "))
people = int(input("How many people: "))
tip = bill * (tip_pct / 100)
total = bill + tip
per_person = total / people
print(f"Tip: {tip:.2f}")
print(f"Total: {total:.2f}")
print(f"Per person: {per_person:.2f}")
Lo que aprenderás: operadores matemáticos, conversión de entradas de texto a números y redondeo a dos decimales con :.2f. Amplíalo redondeando hacia arriba la cantidad por persona para que nadie en la mesa salga perdiendo.
10. Temporizador de cuenta atrás
Escribes cuántos segundos quieres y el programa realiza una cuenta atrás hasta cero. Pequeño, satisfactorio y realmente útil como temporizador para descansos o sesiones Pomodoro una vez terminado.
import time
seconds = int(input("Seconds: "))
while seconds >= 0:
mins, secs = divmod(seconds, 60)
print(f"{mins:02d}:{secs:02d}", end="\r")
time.sleep(1)
seconds -= 1
print("Time's up ")
Lo que aprenderás: el módulo time, la función divmod para separar los números en minutos y segundos, y el truco de \r para actualizar la misma línea en la terminal. Ese parámetro end="\r" es lo que hace que el temporizador parezca real, en lugar de llenar tu terminal con una cascada de texto.
11. Generador de citas aleatorias
Una lista de citas (motivadoras, divertidas, sobre programación, lo que prefieras) y el programa imprime una al azar cada vez que lo ejecutas. Parece demasiado fácil, pero hazlo de todos modos.
import random
quotes = [
"The only way to learn a new programming language is by writing programs in it.",
"Programs must be written for people to read, and only incidentally for machines to execute.",
"Premature optimization is the root of all evil.",
"Simplicity is the soul of efficiency.",
"Code is like humor. When you have to explain it, it's bad.",
]
print(random.choice(quotes))
Lo que aprenderás: conceptos básicos de listas, random.choice y el programa útil más pequeño de todo el lenguaje. Vincúlalo al inicio de tu terminal para ver una cita nueva cada vez que abras una consola: el tipo de detalle sencillo que, sin darte cuenta, hace que programar sea más divertido.
12. El ahorcado (versión simplificada)
Elige una palabra secreta, muestra guiones, deja que el usuario adivine las letras y termina el juego tras seis intentos fallidos. Es un poco más complejo que los anteriores, pero se puede hacer en una hora si no te complicas.
import random
words = ["python", "syntax", "variable", "function", "module"]
secret = random.choice(words)
guessed = set()
wrong = 0
while wrong < 6:
display = "".join(c if c in guessed else "_" for c in secret)
print(display)
if "_" not in display:
print("You won")
break
letter = input("Guess a letter: ").lower()
if letter in secret:
guessed.add(letter)
else:
wrong += 1
print(f"Wrong. {6 - wrong} tries left.")
else:
print(f"You lost. The word was {secret}.")
Lo que aprenderás: conjuntos (sets), construir una cadena con una condición interna y la estructura menos conocida while-else (el bloque else solo se ejecuta si el bucle termina sin un break). ¿Te has cansado de usar siempre las mismas cinco palabras? Léelas desde un archivo de texto. (Te cansarás de ellas muy pronto).
13. Conversor de unidades
Convierte entre unidades comunes: de Celsius a Fahrenheit, de kilómetros a millas o de kilogramos a libras. Práctico, rápido de terminar y el tipo de herramienta que te vendrá genial tener a mano más adelante.
def c_to_f(c):
return c * 9/5 + 32
def km_to_mi(km):
return km * 0.621371
def kg_to_lb(kg):
return kg * 2.20462
print("1. Celsius to Fahrenheit")
print("2. Kilometers to miles")
print("3. Kilograms to pounds")
choice = input("Pick a converter: ")
value = float(input("Value: "))
if choice == "1":
print(c_to_f(value))
elif choice == "2":
print(km_to_mi(value))
elif choice == "3":
print(kg_to_lb(value))
Lo que aprenderás: a estructurar varias funciones pequeñas en un solo archivo, crear un menú básico y usar bifurcaciones según lo que escriba el usuario. Cuando funcionen las conversiones directas, añade las inversas (de Fahrenheit a Celsius, de millas a kilómetros). Misma idea, la mitad de esfuerzo y el doble de práctica.
Cómo consolidar lo aprendido con estos proyectos
Crear un proyecto es solo un momento. Crear uno al día durante dos semanas es un hábito. And la diferencia entre quienes superan la etapa de principiante en Python y quienes no, no es el talento ni el tiempo. Es la constancia en la práctica.
Aquí tienes algunos consejos que te ayudarán, ordenados por importancia:
-
¡Escribe el código, no lo copies y pegues! Sí, es aburrido y repetitivo. Pero también es la única forma de que los patrones se queden grabados en tus manos y no solo en tus ojos. La primera vez que escribas
import randomde memoria, algo hará clic en tu cabeza. -
Rompe el código a propósito. Cuando funcione, borra una línea, comenta una función o cambia el nombre de una variable y observa qué pasa. Solucionar los errores te enseñará mucho más que el propio proceso de creación. (Esto no se asimila del todo hasta que lo intentas por primera vez).
-
Crea el mismo proyecto dos veces. Una semana después, intenta programar de nuevo el juego de adivinar el número desde cero. La segunda vez te demostrará qué conocimientos has retenido realmente, que puede ser menos de lo que esperabas. ¡And no pasa nada!
-
Añade una funcionalidad extra. Elige cualquiera de los proyectos anteriores y añádele un pequeño extra. Guarda la lista de tareas en un archivo. Haz que el simulador de dados muestre los resultados uno a uno. En ese pequeño extra es donde realmente se produce el aprendizaje, porque nadie ha escrito un tutorial exacto sobre cómo hacer tu versión personalizada.
Si te cuesta mantener la constancia en tu práctica diaria, esa es precisamente la razón por la que existe Coddy. Ofrecemos lecciones de Python de cinco minutos, un sistema de rachas que te motiva cuando decae el ánimo y pistas de inteligencia artificial de la mano de Bugsy integradas en la propia lección para cuando te quedes atascado.
Puedes empezar cualquier curso de forma gratuita, incluido el de Python. Lo diseñamos pensando exactamente en la fase en la que te encuentras: has terminado los tutoriales, aún no te sientes del todo seguro y buscas ejercicios prácticos que no te consuman toda la tarde.
¿Qué deberías programar después?
Cuando los proyectos anteriores empiecen a parecerte demasiado fáciles, significará que ya has superado la barrera que querías cruzar. ¡Buen trabajo! El siguiente paso son los proyectos de nivel intermedio, de esos que requieren una o dos librerías y un poco de entrada/salida de archivos o de red. Aquí tienes algunas ideas para subir de nivel:
- Una aplicación del clima que use la librería
requestsy una API meteorológica gratuita. - Un raspador web (web scraper) con
BeautifulSoupque extraiga los titulares de un sitio web que suelas leer. - Un juego de aventura conversacional basado en texto con varias salas y una lista de inventario.
- Un temporizador Pomodoro que registre tus sesiones en un archivo CSV.
- Una aplicación web sencilla con Flask que muestre una página con un chiste aleatorio.
Ninguno de estos proyectos es avanzado. Simplemente combinan dos o tres cosas que ya sabes con un módulo nuevo. Elige el que te parezca más divertido, porque ese será el que realmente termines.
Los tutoriales dejan de ser útiles en el momento en que te dejan solo y te piden que pienses por ti mismo. Los proyectos, incluso los más sencillos, te obligan a pensar. Haz los suficientes y la trampa de los tutoriales dejará de ser un problema.
Coddy te ayuda a pasar de la visualización pasiva a la programación real con lecciones de Python de cinco minutos, rachas diarias y Bugsy, un asistente de IA que te da pistas en lugar de desvelarte la respuesta.
Share this article
About the Author
Coddy Team
Editorial Team
Frequently Asked Questions
¿Cuál es el proyecto de Python más fácil para un principiante?
El juego de adivinar el número es la respuesta estándar. Es corto, utiliza entradas, bucles y condicionales en un solo programa, y se siente como un juego real cuando se ejecuta. La mayoría de las personas pueden terminarlo en 20 minutos, incluso si acaban de aprender qué hace un bucle while.
¿Cuánto tiempo deberían tomar los proyectos fáciles de Python?
Entre diez minutos y una hora. Si estás pasando tres horas en uno, o bien es demasiado difícil para tu nivel actual, o has caído en una madriguera de depuración de la que vale la pena salir. Elige uno más pequeño, termínalo y luego regresa.
¿Necesito instalar algo para hacer estos proyectos?
Sí, si quieres ejecutarlos localmente; no, si no es así. Instalar Python desde python.org toma unos cinco minutos. O puedes omitir la instalación por completo y ejecutarlos en un playground en el navegador como el que está dentro de Coddy, que es la opción sin configuración previa.
¿Son buenos estos proyectos de Python para un currículum?
Por sí solos, no. Un proyecto para el currículum suele necesitar más profundidad, como una pequeña aplicación web, un script que hayas usado para automatizar algo real en el trabajo o una contribución a un proyecto de código abierto. Los 13 que presentamos aquí son peldaños para ganar confianza, no piezas de portafolio. Te preparan para construir cosas dignas de un currículum más adelante.
¿Qué conceptos de Python aprenderé con estos proyectos?
A lo largo de los 13, trabajarás con variables, entrada y salida, condicionales, bucles, funciones, listas, diccionarios, conjuntos, el módulo random, el módulo time, f-strings, comprensiones de listas y un par de módulos de la biblioteca estándar como collections y string. Eso representa una base de trabajo muy sólida del lenguaje.
¿Qué pasa si mi código no funciona?
Lee el mensaje de error. La mayoría de los errores de principiante dicen casi exactamente qué salió mal, por lo general en la línea justo encima de donde empezaste a entrar en pánico. Busca en Google el mensaje de error, pídele a un asistente de IA como Bugsy que te lo explique o pégalo en un foro. La depuración de errores es una habilidad que se desarrolla de la misma manera que la programación: a base de repetición.
¿Puedo hacer estos proyectos en un teléfono?
Sí. Python se ejecuta en entornos de programación móviles, incluida la aplicación Coddy, que tiene un playground de código integrado. No vas a escribir software empresarial en una pantalla del tamaño de tu mano, pero los pequeños proyectos de práctica funcionan muy bien de esa manera, y mucha gente practica más en un teléfono de lo que lo haría en una computadora portátil.
¿Cuál es el siguiente paso después de los proyectos fáciles de Python?
Proyectos intermedios que combinen más conceptos: un pequeño raspador web (web scraper), un cliente de API, una aplicación de Flask o Django que sirva una página, o un script que procese archivos en una carpeta. Cualquier cosa que incorpore una nueva biblioteca y se conecte a algo externo es un siguiente paso muy útil. Elige uno que resuelva un pequeño problema de tu vida diaria. Ese será el que termines.



