15 ejercicios de Python para principiantes con soluciones

Publicado el: 11/07/2026
Tempo de leitura: 4 minutos
Programador pensnado em frente à vários monitores com código na tela

Practicar con ejercicios pequeños es una de las formas más eficaces de aprender Python. Leer teoría ayuda a comprender conceptos, pero resolver problemas obliga a pensar, probar, equivocarse y corregir. En esta guía encontrarás quince ejercicios progresivos con soluciones explicadas. Puedes escribir cada programa desde cero, ejecutarlo y después comparar tu resultado con la propuesta.

Antes de empezar, conviene repasar Python para principiantes, las funciones, las listas, los diccionarios y el manejo de excepciones. La documentación oficial del tutorial de Python y la referencia de funciones integradas son fuentes excelentes para consultar dudas.

Cómo aprovechar los ejercicios

No copies la solución inmediatamente. Primero escribe ejemplos de entrada y salida, divide el problema en pasos y crea una primera versión sencilla. Después prueba valores normales, límites, entradas vacías y datos incorrectos. Cuando termines, compara no solo el resultado, sino también la claridad y la facilidad para modificar el código.

1. Saludar al usuario

Pide un nombre y muestra un saludo personalizado.

nombre = input("¿Cómo te llamas? ").strip()
if nombre:
    print(f"Hola, {nombre}!")
else:
    print("Hola, visitante!")

strip() elimina espacios de los extremos. El condicional evita mostrar un saludo vacío.

2. Convertir grados Celsius a Fahrenheit

celsius = float(input("Temperatura en °C: "))
fahrenheit = celsius * 9 / 5 + 32
print(f"{celsius:.1f} °C equivalen a {fahrenheit:.1f} °F")

Este ejercicio practica conversión de tipos, operaciones y f-strings. Para una versión robusta, captura ValueError.

3. Comprobar si un número es par

numero = int(input("Número entero: "))
if numero % 2 == 0:
    print("Es par")
else:
    print("Es impar")

El operador módulo devuelve el resto. Si el resto al dividir entre dos es cero, el número es par.

4. Encontrar el mayor de tres números

numeros = [
    float(input("Primer número: ")),
    float(input("Segundo número: ")),
    float(input("Tercer número: ")),
]
print(f"El mayor es {max(numeros)}")

También puedes resolverlo con varios if, pero max() expresa mejor la intención.

5. Sumar los números de una lista

valores = [12, 5, 8, 20]
total = 0
for valor in valores:
    total += valor
print(total)

Después compara tu solución con sum(valores). Implementar primero el bucle ayuda a entender cómo funciona la acumulación.

6. Contar vocales

def contar_vocales(texto):
    vocales = set("aeiouáéíóúü")
    return sum(1 for letra in texto.lower() if letra in vocales)

frase = input("Escribe una frase: ")
print(contar_vocales(frase))

Un set facilita las pruebas de pertenencia. La expresión generadora produce un uno por cada vocal.

7. Invertir una cadena

texto = input("Texto: ")
invertido = texto[::-1]
print(invertido)

El slicing con paso -1 recorre la cadena desde el final. Como práctica adicional, implementa la inversión con un bucle.

8. Detectar un palíndromo

def normalizar(texto):
    return "".join(caracter.lower() for caracter in texto if caracter.isalnum())

texto = input("Palabra o frase: ")
limpio = normalizar(texto)
print("Es palíndromo" if limpio == limpio[::-1] else "No es palíndromo")

La normalización elimina espacios y signos. Así una frase puede compararse de manera justa.

9. Crear una tabla de multiplicar

numero = int(input("Tabla del: "))
for multiplicador in range(1, 11):
    resultado = numero * multiplicador
    print(f"{numero} × {multiplicador} = {resultado}")

range(1, 11) genera del uno al diez porque el límite final no se incluye.

10. Eliminar duplicados conservando el orden

elementos = [3, 1, 3, 2, 1, 5]
unicos = list(dict.fromkeys(elementos))
print(unicos)

Los diccionarios modernos conservan el orden de inserción. Como alternativa educativa, usa un set de valores vistos y una lista de salida.

11. Contar palabras

from collections import Counter

texto = "python es claro y python es práctico"
palabras = texto.lower().split()
frecuencias = Counter(palabras)
print(frecuencias)

Para texto real necesitarás limpiar puntuación y definir qué se considera palabra.

12. Calcular factorial

def factorial(numero):
    if numero < 0:
        raise ValueError("No se admite un número negativo")
    resultado = 1
    for valor in range(2, numero + 1):
        resultado *= valor
    return resultado

print(factorial(5))

El factorial de cero es uno. La versión iterativa evita problemas de profundidad recursiva.

13. Comprobar números primos

def es_primo(numero):
    if numero < 2:
        return False
    limite = int(numero ** 0.5)
    for divisor in range(2, limite + 1):
        if numero % divisor == 0:
            return False
    return True

Solo es necesario comprobar divisores hasta la raíz cuadrada. Prueba con 2, 3, 4, 17 y 25.

14. Leer un archivo y contar líneas

from pathlib import Path

ruta = Path("notas.txt")
try:
    with ruta.open("r", encoding="utf-8") as archivo:
        cantidad = sum(1 for _ in archivo)
except FileNotFoundError:
    print("El archivo no existe")
else:
    print(f"Líneas: {cantidad}")

El uso de with garantiza el cierre del archivo. Especificar UTF-8 evita depender de la configuración del sistema.

15. Agenda simple con diccionario

agenda = {}

while True:
    print("1. Añadir  2. Buscar  0. Salir")
    opcion = input("Opción: ").strip()

    if opcion == "0":
        break
    if opcion == "1":
        nombre = input("Nombre: ").strip().title()
        telefono = input("Teléfono: ").strip()
        if nombre and telefono:
            agenda[nombre] = telefono
    elif opcion == "2":
        nombre = input("Nombre: ").strip().title()
        print(agenda.get(nombre, "Contacto no encontrado"))
    else:
        print("Opción inválida")

Este ejercicio combina bucles, condiciones, entrada, diccionarios y validación. Puedes ampliarlo guardando los datos en JSON.

Cómo probar tus soluciones

Crea casos normales y extremos. Para el factorial prueba cero y negativos. Para primos usa números pequeños y grandes. Para cadenas usa mayúsculas, acentos, espacios y símbolos. Cuando una función sea independiente de input(), añade pruebas con assert:

assert contar_vocales("Python") == 1
assert factorial(0) == 1
assert es_primo(17) is True
assert es_primo(18) is False

Mejoras para seguir practicando

Convierte cada ejercicio en una función con parámetros y retorno. Añade anotaciones de tipo, docstrings y manejo de errores. Después reúne varios ejercicios en un menú, guarda resultados en archivos y crea una pequeña suite de tests. También puedes medir distintas soluciones y comparar legibilidad antes que microoptimizaciones.

Errores frecuentes

Los principiantes suelen olvidar convertir el resultado de input(), usar nombres poco claros, mezclar toda la lógica en el nivel global, capturar excepciones demasiado amplias y no probar entradas vacías. Otro error habitual es copiar una solución sin poder explicarla. Una solución más corta no siempre es mejor si oculta la intención.

Conclusión

Estos quince ejercicios cubren entrada, salida, condiciones, bucles, funciones, colecciones, archivos y validación. Resuélvelos en orden, modifica requisitos y crea casos de prueba. El progreso real aparece cuando puedes explicar por qué una solución funciona, detectar sus límites y adaptarla a una necesidad nueva.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Contenido del artículo

    Artículos relacionados

    Símbolo de repetição ao lado do logotipo do Python pensativo, representando o conceito de loops na programação em Python.
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Bucles en Python: for y while explicados con ejemplos

    Aprende bucles for y while en Python con range, enumerate, zip, break, continue, else, comprensiones, generadores y ejemplos prácticos.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    ícone de loop com o texto 'While' abaixo
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Bucles while en Python: guía práctica para principiantes

    Aprende bucles while en Python con condiciones, validación, menús, break, continue, else, centinelas, reintentos y buenas prácticas.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Imagem de um quadro negro com várias interrogações no lugar de lâmpadas, e uma lâmpada conectada no meio
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    If, elif y else en Python: guía de decisiones

    Aprende if, elif y else en Python con comparaciones, operadores lógicos, validación, rangos, menús, retornos tempranos y pruebas.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Manipulação de dados JSON em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    JSON en Python: leer, escribir y validar datos

    Aprende JSON en Python con load, loads, dump, dumps, archivos UTF-8, validación, APIs, Decimal, fechas y escritura segura.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Homem pensando à frente de um notebook com código de programação
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Indentación en Python: guía clara para principiantes

    Aprende indentación en Python, cuatro espacios, bloques, IndentationError, TabError, errores lógicos y configuración correcta del editor.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Logo do Python com símbolos de lista, tupla e dicionário
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Lista vs tupla vs set vs diccionario en Python

    Compara listas, tuplas, sets y diccionarios en Python según orden, mutabilidad, duplicados, búsquedas, conversiones y casos de uso.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026